.class public abstract Lcom/nemustech/tiffany/world/TFHolder;
.super Lcom/nemustech/tiffany/world/TFObject;
.source "TFHolder.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;,
        Lcom/nemustech/tiffany/world/TFHolder$BindingBehaviorDispatcher;,
        Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;,
        Lcom/nemustech/tiffany/world/TFHolder$OnUpdateHolderListener;,
        Lcom/nemustech/tiffany/world/TFHolder$OnObjectShiftListener;,
        Lcom/nemustech/tiffany/world/TFHolder$OnSetItemListener;
    }
.end annotation


# static fields
.field private static final TAG:Ljava/lang/String; = "TFHolder"


# instance fields
.field mBindingBehaviorDispatcher:Lcom/nemustech/tiffany/world/TFHolder$BindingBehaviorDispatcher;

.field mCurrentActingHolder:Lcom/nemustech/tiffany/world/TFHolder;

.field mDeceleration:F

.field mDelayedSetItemMode:Z

.field mDeviation:F

.field protected mDragged:Z

.field mDrawOrder:Landroid/util/SparseIntArray;

.field mDummy:Lcom/nemustech/tiffany/world/TFObject;

.field mFacingFrontYFirst:Z

.field mHeadItemIndex:I

.field private mHeadSlotIndex:I

.field mHolderBindings:Ljava/util/LinkedList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/LinkedList",
            "<",
            "Lcom/nemustech/tiffany/world/TFHolder;",
            ">;"
        }
    .end annotation
.end field

.field mImageProvider:Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;

.field mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Lcom/nemustech/tiffany/world/TFItemProvider",
            "<*>;"
        }
    .end annotation
.end field

.field mLayoutObjects:Z

.field protected mMinorDrag:F

.field protected mMoveAni:Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;

.field mNeedToSetItem:Z

.field mObjectShiftListener:Lcom/nemustech/tiffany/world/TFHolder$OnObjectShiftListener;

.field protected mObjectSlots:Ljava/util/LinkedList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/LinkedList",
            "<",
            "Lcom/nemustech/tiffany/world/TFObjectContainer;",
            ">;"
        }
    .end annotation
.end field

.field mOnObjectShiftRunnable:Ljava/lang/Runnable;

.field protected mOnUpdateHolderListener:Lcom/nemustech/tiffany/world/TFHolder$OnUpdateHolderListener;

.field mRefresh:Z

.field mSensitivity:F

.field mSetItemListener:Lcom/nemustech/tiffany/world/TFHolder$OnSetItemListener;

.field mSetItemNow:Z

.field mStepPerUnitForce:F

.field protected mTOfHitPoint:F

.field private mTerminalHolder:Z

.field protected mTouchDown:Z

.field protected mVelocity:F

.field protected mWraparound:Z


# direct methods
.method public constructor <init>()V
    .locals 5

    .prologue
    const/high16 v4, 0x3f80

    const/4 v3, 0x0

    const/4 v2, 0x1

    const/4 v1, 0x0

    .line 19
    invoke-direct {p0}, Lcom/nemustech/tiffany/world/TFObject;-><init>()V

    .line 2014
    new-instance v0, Lcom/nemustech/tiffany/world/TFHolder$2;

    invoke-direct {v0, p0}, Lcom/nemustech/tiffany/world/TFHolder$2;-><init>(Lcom/nemustech/tiffany/world/TFHolder;)V

    iput-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mOnObjectShiftRunnable:Ljava/lang/Runnable;

    .line 2057
    iput v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mSensitivity:F

    .line 2058
    iput v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mStepPerUnitForce:F

    .line 2059
    const v0, 0x3851b717

    iput v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDeceleration:F

    .line 21
    iput-boolean v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    .line 22
    iput-boolean v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mVisible:Z

    .line 23
    iput-boolean v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mShouldDraw:Z

    .line 26
    iput-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWraparound:Z

    .line 27
    new-instance v0, Ljava/util/LinkedList;

    invoke-direct {v0}, Ljava/util/LinkedList;-><init>()V

    iput-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    .line 28
    iget-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v0}, Ljava/util/LinkedList;->clear()V

    .line 29
    new-instance v0, Ljava/util/LinkedList;

    invoke-direct {v0}, Ljava/util/LinkedList;-><init>()V

    iput-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHolderBindings:Ljava/util/LinkedList;

    .line 30
    iget-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHolderBindings:Ljava/util/LinkedList;

    invoke-virtual {v0}, Ljava/util/LinkedList;->clear()V

    .line 32
    iput v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadItemIndex:I

    .line 33
    const/4 v0, -0x1

    iput v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadSlotIndex:I

    .line 36
    iput-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDragged:Z

    .line 37
    iput-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTouchDown:Z

    .line 38
    iput v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMinorDrag:F

    .line 41
    iput v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDeviation:F

    .line 44
    iput-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDelayedSetItemMode:Z

    .line 45
    iput-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mNeedToSetItem:Z

    .line 46
    iput-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mSetItemNow:Z

    .line 48
    iget-boolean v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    if-nez v0, :cond_0

    .line 49
    new-instance v0, Lcom/nemustech/tiffany/world/TFPlaceHolder;

    invoke-direct {v0}, Lcom/nemustech/tiffany/world/TFPlaceHolder;-><init>()V

    iput-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDummy:Lcom/nemustech/tiffany/world/TFObject;

    .line 50
    iget-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDummy:Lcom/nemustech/tiffany/world/TFObject;

    const-string v1, "dummy"

    iput-object v1, v0, Lcom/nemustech/tiffany/world/TFObject;->mDescription:Ljava/lang/String;

    .line 52
    :cond_0
    return-void
.end method

.method public constructor <init>(Z)V
    .locals 0
    .parameter "isTerminalHolder"

    .prologue
    .line 55
    invoke-direct {p0}, Lcom/nemustech/tiffany/world/TFHolder;-><init>()V

    .line 56
    invoke-virtual {p0, p1}, Lcom/nemustech/tiffany/world/TFHolder;->setTerminalHolder(Z)V

    .line 57
    return-void
.end method

.method private renderChild(Ljavax/microedition/khronos/opengles/GL10;ILcom/nemustech/tiffany/world/TFObjectContainer;)V
    .locals 3
    .parameter "gl"
    .parameter "tickPassed"
    .parameter "o"

    .prologue
    .line 1355
    invoke-interface {p1}, Ljavax/microedition/khronos/opengles/GL10;->glPushMatrix()V

    .line 1357
    invoke-virtual {p3}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v2

    instance-of v2, v2, Lcom/nemustech/tiffany/world/TFHolder;

    if-eqz v2, :cond_1

    .line 1358
    invoke-virtual {p3}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v0

    check-cast v0, Lcom/nemustech/tiffany/world/TFHolder;

    .line 1359
    .local v0, holder:Lcom/nemustech/tiffany/world/TFHolder;
    invoke-virtual {v0, p1, p2}, Lcom/nemustech/tiffany/world/TFHolder;->draw(Ljavax/microedition/khronos/opengles/GL10;I)V

    .line 1360
    invoke-virtual {v0}, Lcom/nemustech/tiffany/world/TFHolder;->checkEffectFinish()V

    .line 1367
    .end local v0           #holder:Lcom/nemustech/tiffany/world/TFHolder;
    :cond_0
    :goto_0
    invoke-interface {p1}, Ljavax/microedition/khronos/opengles/GL10;->glPopMatrix()V

    .line 1368
    return-void

    .line 1362
    :cond_1
    invoke-virtual {p3}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v2

    instance-of v2, v2, Lcom/nemustech/tiffany/world/TFModel;

    if-eqz v2, :cond_0

    .line 1363
    invoke-virtual {p3}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v1

    check-cast v1, Lcom/nemustech/tiffany/world/TFModel;

    .line 1364
    .local v1, model:Lcom/nemustech/tiffany/world/TFModel;
    invoke-virtual {v1, p1, p2}, Lcom/nemustech/tiffany/world/TFModel;->_draw(Ljavax/microedition/khronos/opengles/GL10;I)V

    .line 1365
    invoke-virtual {v1}, Lcom/nemustech/tiffany/world/TFModel;->checkEffectFinish()V

    goto :goto_0
.end method


# virtual methods
.method addHolder(Lcom/nemustech/tiffany/world/TFHolder;)Z
    .locals 2
    .parameter "holder"

    .prologue
    .line 752
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getSlotCount()I

    move-result v0

    const/4 v1, 0x1

    sub-int/2addr v0, v1

    invoke-virtual {p0, p1, v0}, Lcom/nemustech/tiffany/world/TFHolder;->addHolder(Lcom/nemustech/tiffany/world/TFHolder;I)Z

    move-result v0

    return v0
.end method

.method abstract addHolder(Lcom/nemustech/tiffany/world/TFHolder;I)Z
.end method

.method addModel(Lcom/nemustech/tiffany/world/TFModel;)Z
    .locals 2
    .parameter "model"

    .prologue
    .line 764
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getSlotCount()I

    move-result v0

    const/4 v1, 0x1

    sub-int/2addr v0, v1

    invoke-virtual {p0, p1, v0}, Lcom/nemustech/tiffany/world/TFHolder;->addModel(Lcom/nemustech/tiffany/world/TFModel;I)Z

    move-result v0

    return v0
.end method

.method abstract addModel(Lcom/nemustech/tiffany/world/TFModel;I)Z
.end method

.method public addSlots(I)V
    .locals 4
    .parameter "numSlots"

    .prologue
    .line 729
    const-class v2, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v2

    .line 730
    const/4 v0, 0x0

    .local v0, i:I
    :goto_0
    if-ge v0, p1, :cond_1

    .line 731
    :try_start_0
    new-instance v1, Lcom/nemustech/tiffany/world/TFObjectContainer;

    invoke-direct {v1}, Lcom/nemustech/tiffany/world/TFObjectContainer;-><init>()V

    .line 732
    .local v1, oc:Lcom/nemustech/tiffany/world/TFObjectContainer;
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDummy:Lcom/nemustech/tiffany/world/TFObject;

    if-nez v3, :cond_0

    .line 733
    new-instance v3, Lcom/nemustech/tiffany/world/TFObject;

    invoke-direct {v3}, Lcom/nemustech/tiffany/world/TFObject;-><init>()V

    iput-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDummy:Lcom/nemustech/tiffany/world/TFObject;

    .line 735
    :cond_0
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDummy:Lcom/nemustech/tiffany/world/TFObject;

    invoke-virtual {v1, v3}, Lcom/nemustech/tiffany/world/TFObjectContainer;->setObject(Lcom/nemustech/tiffany/world/TFObject;)V

    .line 736
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v3, v1}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z

    .line 737
    invoke-virtual {p0, v0}, Lcom/nemustech/tiffany/world/TFHolder;->setDrawOrder(I)V

    .line 730
    add-int/lit8 v0, v0, 0x1

    goto :goto_0

    .line 739
    .end local v1           #oc:Lcom/nemustech/tiffany/world/TFObjectContainer;
    :cond_1
    invoke-virtual {p0, p1}, Lcom/nemustech/tiffany/world/TFHolder;->getHeadSlotIndex(I)I

    move-result v3

    invoke-virtual {p0, v3}, Lcom/nemustech/tiffany/world/TFHolder;->setHeadSlotIndex(I)V

    .line 740
    invoke-virtual {p0, p1}, Lcom/nemustech/tiffany/world/TFHolder;->onAddSlots(I)V

    .line 741
    monitor-exit v2

    .line 742
    return-void

    .line 741
    :catchall_0
    move-exception v3

    monitor-exit v2
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v3
.end method

.method protected adjustItemIndex(I)I
    .locals 3
    .parameter "itemIndex"

    .prologue
    const/4 v2, -0x1

    .line 645
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getItemCount()I

    move-result v0

    .line 646
    .local v0, itemCount:I
    if-lez v0, :cond_4

    .line 647
    if-ltz p1, :cond_0

    if-ge p1, v0, :cond_0

    move v1, p1

    .line 661
    :goto_0
    return v1

    .line 652
    :cond_0
    iget-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWraparound:Z

    if-eqz v1, :cond_3

    .line 653
    :goto_1
    if-gez p1, :cond_1

    .line 654
    add-int/2addr p1, v0

    goto :goto_1

    .line 655
    :cond_1
    :goto_2
    if-lt p1, v0, :cond_2

    .line 656
    sub-int/2addr p1, v0

    goto :goto_2

    :cond_2
    move v1, p1

    .line 657
    goto :goto_0

    :cond_3
    move v1, v2

    .line 659
    goto :goto_0

    :cond_4
    move v1, v2

    .line 661
    goto :goto_0
.end method

.method public applyTouchEvent(Lcom/nemustech/tiffany/world/TFObject;[FI)V
    .locals 7
    .parameter "object"
    .parameter "forceVector"
    .parameter "tickPassed"

    .prologue
    .line 1485
    const-class v1, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v1

    .line 1486
    :try_start_0
    invoke-virtual {p0, p2, p3}, Lcom/nemustech/tiffany/world/TFHolder;->calcTouchVectorMagnitude([FI)F

    move-result v0

    .line 1487
    .local v0, dx:F
    invoke-static {v0}, Ljava/lang/Float;->isNaN(F)Z

    move-result v2

    if-eqz v2, :cond_0

    .line 1488
    const-string v2, "TFHolder"

    const-string v3, "tickPassed: %d"

    const/4 v4, 0x1

    new-array v4, v4, [Ljava/lang/Object;

    const/4 v5, 0x0

    invoke-static {p3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v6

    aput-object v6, v4, v5

    invoke-static {v3, v4}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v3

    invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 1491
    :cond_0
    iget v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mSensitivity:F

    mul-float/2addr v0, v2

    .line 1492
    iget v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMinorDrag:F

    add-float/2addr v2, v0

    invoke-static {v2}, Ljava/lang/Math;->abs(F)F

    move-result v2

    const v3, 0x3dcccccd

    cmpl-float v2, v2, v3

    if-lez v2, :cond_2

    .line 1494
    const/4 v2, 0x1

    iput-boolean v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDragged:Z

    .line 1495
    iget v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMinorDrag:F

    add-float/2addr v2, v0

    int-to-float v3, p3

    div-float/2addr v2, v3

    iput v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mVelocity:F

    .line 1496
    iget v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMinorDrag:F

    add-float/2addr v2, v0

    iget v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mStepPerUnitForce:F

    mul-float/2addr v2, v3

    invoke-virtual {p0, v2}, Lcom/nemustech/tiffany/world/TFHolder;->moveHeadModelStep(F)Z

    .line 1497
    const/4 v2, 0x0

    iput v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMinorDrag:F

    .line 1505
    :goto_0
    iget-object v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mParentHolder:Lcom/nemustech/tiffany/world/TFHolder;

    if-eqz v2, :cond_1

    .line 1506
    iget-object v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mParentHolder:Lcom/nemustech/tiffany/world/TFHolder;

    invoke-virtual {v2, p1, p2, p3}, Lcom/nemustech/tiffany/world/TFHolder;->applyTouchEvent(Lcom/nemustech/tiffany/world/TFObject;[FI)V

    .line 1507
    :cond_1
    monitor-exit v1

    .line 1508
    return-void

    .line 1501
    :cond_2
    iget v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMinorDrag:F

    add-float/2addr v2, v0

    iput v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMinorDrag:F

    .line 1502
    const/4 v2, 0x0

    iput v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mVelocity:F

    goto :goto_0

    .line 1507
    .end local v0           #dx:F
    :catchall_0
    move-exception v2

    monitor-exit v1
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v2
.end method

.method public arrangeModels()V
    .locals 2

    .prologue
    .line 1102
    const-string v0, "TFHolder"

    const-string v1, "This holder did not override \'arrangeModels()\' method!"

    invoke-static {v0, v1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I

    .line 1103
    return-void
.end method

.method public associateToWorld(Lcom/nemustech/tiffany/world/TFWorld;)V
    .locals 6
    .parameter "world"

    .prologue
    .line 778
    const-class v4, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v4

    .line 779
    :try_start_0
    iput-object p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    .line 780
    iget-boolean v5, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    if-eqz v5, :cond_0

    .line 781
    iget-object v5, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v5}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    .local v1, i$:Ljava/util/Iterator;
    :goto_0
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v5

    if-eqz v5, :cond_1

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/nemustech/tiffany/world/TFObjectContainer;

    .line 782
    .local v3, o:Lcom/nemustech/tiffany/world/TFObjectContainer;
    invoke-virtual {v3}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v2

    check-cast v2, Lcom/nemustech/tiffany/world/TFModel;

    .line 783
    .local v2, model:Lcom/nemustech/tiffany/world/TFModel;
    iput-object p1, v2, Lcom/nemustech/tiffany/world/TFModel;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    goto :goto_0

    .line 792
    .end local v1           #i$:Ljava/util/Iterator;
    .end local v2           #model:Lcom/nemustech/tiffany/world/TFModel;
    .end local v3           #o:Lcom/nemustech/tiffany/world/TFObjectContainer;
    :catchall_0
    move-exception v5

    monitor-exit v4
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v5

    .line 787
    :cond_0
    :try_start_1
    iget-object v5, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v5}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    .restart local v1       #i$:Ljava/util/Iterator;
    :goto_1
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v5

    if-eqz v5, :cond_1

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/nemustech/tiffany/world/TFObjectContainer;

    .line 788
    .restart local v3       #o:Lcom/nemustech/tiffany/world/TFObjectContainer;
    invoke-virtual {v3}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v0

    check-cast v0, Lcom/nemustech/tiffany/world/TFHolder;

    .line 789
    .local v0, holder:Lcom/nemustech/tiffany/world/TFHolder;
    invoke-virtual {v0, p1}, Lcom/nemustech/tiffany/world/TFHolder;->associateToWorld(Lcom/nemustech/tiffany/world/TFWorld;)V

    goto :goto_1

    .line 792
    .end local v0           #holder:Lcom/nemustech/tiffany/world/TFHolder;
    .end local v3           #o:Lcom/nemustech/tiffany/world/TFObjectContainer;
    :cond_1
    monitor-exit v4
    :try_end_1
    .catchall {:try_start_1 .. :try_end_1} :catchall_0

    .line 793
    return-void
.end method

.method public attachTo(Lcom/nemustech/tiffany/world/TFHolder;)V
    .locals 1
    .parameter "parentHolder"

    .prologue
    .line 153
    invoke-virtual {p1}, Lcom/nemustech/tiffany/world/TFHolder;->getSlotCount()I

    move-result v0

    invoke-virtual {p0, p1, v0}, Lcom/nemustech/tiffany/world/TFHolder;->attachTo(Lcom/nemustech/tiffany/world/TFHolder;I)V

    .line 154
    return-void
.end method

.method public attachTo(Lcom/nemustech/tiffany/world/TFHolder;I)V
    .locals 4
    .parameter "parentHolder"
    .parameter "index"

    .prologue
    .line 132
    const-class v1, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v1

    .line 133
    :try_start_0
    iget-object v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mParentHolder:Lcom/nemustech/tiffany/world/TFHolder;

    if-eqz v2, :cond_0

    .line 134
    new-instance v2, Ljava/lang/IllegalStateException;

    const-string v3, "Has already parent holder"

    invoke-direct {v2, v3}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v2

    .line 145
    :catchall_0
    move-exception v2

    monitor-exit v1
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v2

    .line 138
    :cond_0
    :try_start_1
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getLayer()Lcom/nemustech/tiffany/world/TFWorld$Layer;

    move-result-object v0

    .line 139
    .local v0, layer:Lcom/nemustech/tiffany/world/TFWorld$Layer;
    if-eqz v0, :cond_1

    .line 140
    invoke-virtual {v0, p0}, Lcom/nemustech/tiffany/world/TFWorld$Layer;->remove(Ljava/lang/Object;)Z

    .line 141
    const/4 v2, 0x0

    invoke-virtual {p0, v2}, Lcom/nemustech/tiffany/world/TFHolder;->setLayer(Lcom/nemustech/tiffany/world/TFWorld$Layer;)V

    .line 143
    :cond_1
    invoke-virtual {p1, p0, p2}, Lcom/nemustech/tiffany/world/TFHolder;->addHolder(Lcom/nemustech/tiffany/world/TFHolder;I)Z

    .line 145
    monitor-exit v1
    :try_end_1
    .catchall {:try_start_1 .. :try_end_1} :catchall_0

    .line 146
    return-void
.end method

.method public attachTo(Lcom/nemustech/tiffany/world/TFWorld;)V
    .locals 6
    .parameter "world"

    .prologue
    .line 161
    const-class v3, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v3

    .line 162
    :try_start_0
    iget-object v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mParentHolder:Lcom/nemustech/tiffany/world/TFHolder;

    if-eqz v2, :cond_0

    .line 165
    new-instance v2, Ljava/lang/IllegalStateException;

    const-string v4, "Detach from its parent holder first"

    invoke-direct {v2, v4}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v2

    .line 190
    :catchall_0
    move-exception v2

    monitor-exit v3
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v2

    .line 169
    :cond_0
    if-nez p1, :cond_1

    .line 170
    :try_start_1
    new-instance v2, Ljava/lang/IllegalArgumentException;

    const-string v4, "World cannot be null"

    invoke-direct {v2, v4}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v2

    .line 172
    :cond_1
    iput-object p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    .line 174
    iget-object v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v2}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v0

    .local v0, i$:Ljava/util/Iterator;
    :cond_2
    :goto_0
    invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z

    move-result v2

    if-eqz v2, :cond_4

    invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/nemustech/tiffany/world/TFObjectContainer;

    .line 175
    .local v1, o:Lcom/nemustech/tiffany/world/TFObjectContainer;
    invoke-virtual {v1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v2

    if-eqz v2, :cond_2

    .line 176
    invoke-virtual {v1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v2

    instance-of v2, v2, Lcom/nemustech/tiffany/world/TFModel;

    if-eqz v2, :cond_3

    .line 177
    invoke-virtual {v1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v2

    iget-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    iput-object v4, v2, Lcom/nemustech/tiffany/world/TFObject;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    goto :goto_0

    .line 179
    :cond_3
    invoke-virtual {v1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v2

    check-cast v2, Lcom/nemustech/tiffany/world/TFHolder;

    iget-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    invoke-virtual {v2, v4}, Lcom/nemustech/tiffany/world/TFHolder;->associateToWorld(Lcom/nemustech/tiffany/world/TFWorld;)V

    goto :goto_0

    .line 183
    .end local v1           #o:Lcom/nemustech/tiffany/world/TFObjectContainer;
    :cond_4
    iget-object v2, p1, Lcom/nemustech/tiffany/world/TFWorld;->mRenderer:Lcom/nemustech/tiffany/world/TFRenderer;

    invoke-virtual {v2, p0}, Lcom/nemustech/tiffany/world/TFRenderer;->add(Lcom/nemustech/tiffany/world/TFHolder;)V

    .line 184
    iget-object v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mCloneList:Ljava/util/LinkedList;

    if-eqz v2, :cond_5

    .line 185
    iget-object v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mCloneList:Ljava/util/LinkedList;

    invoke-virtual {v2}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v0

    :goto_1
    invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z

    move-result v2

    if-eqz v2, :cond_5

    invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/nemustech/tiffany/world/TFObject;

    .line 186
    .local v1, o:Lcom/nemustech/tiffany/world/TFObject;
    check-cast v1, Lcom/nemustech/tiffany/world/TFHolder;

    .end local v1           #o:Lcom/nemustech/tiffany/world/TFObject;
    invoke-virtual {v1, p1}, Lcom/nemustech/tiffany/world/TFHolder;->attachTo(Lcom/nemustech/tiffany/world/TFWorld;)V

    goto :goto_1

    .line 189
    :cond_5
    const-string v2, "TFHolder"

    new-instance v4, Ljava/lang/StringBuilder;

    invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V

    const-string v5, "Holder("

    invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v4

    invoke-virtual {v4, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v4

    const-string v5, ") has been attatched"

    invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v4

    invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v4

    invoke-static {v2, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

    .line 190
    monitor-exit v3
    :try_end_1
    .catchall {:try_start_1 .. :try_end_1} :catchall_0

    .line 191
    return-void
.end method

.method public banChiselFringe(Z)V
    .locals 2
    .parameter "mode"

    .prologue
    .line 717
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->isTerminalHolder()Z

    move-result v1

    if-eqz v1, :cond_0

    .line 718
    const/4 v0, 0x0

    .local v0, i:I
    :goto_0
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getSlotCount()I

    move-result v1

    if-ge v0, v1, :cond_1

    .line 719
    invoke-virtual {p0, v0}, Lcom/nemustech/tiffany/world/TFHolder;->getModelInSlot(I)Lcom/nemustech/tiffany/world/TFModel;

    move-result-object v1

    invoke-virtual {v1, p1}, Lcom/nemustech/tiffany/world/TFModel;->banChiselFringe(Z)V

    .line 718
    add-int/lit8 v0, v0, 0x1

    goto :goto_0

    .line 723
    .end local v0           #i:I
    :cond_0
    const/4 v0, 0x0

    .restart local v0       #i:I
    :goto_1
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getSlotCount()I

    move-result v1

    if-ge v0, v1, :cond_1

    .line 724
    invoke-virtual {p0, v0}, Lcom/nemustech/tiffany/world/TFHolder;->getHolderInSlot(I)Lcom/nemustech/tiffany/world/TFHolder;

    move-result-object v1

    invoke-virtual {v1, p1}, Lcom/nemustech/tiffany/world/TFHolder;->banChiselFringe(Z)V

    .line 723
    add-int/lit8 v0, v0, 0x1

    goto :goto_1

    .line 726
    :cond_1
    return-void
.end method

.method public bindHolder(Lcom/nemustech/tiffany/world/TFHolder;)V
    .locals 2
    .parameter "holder"

    .prologue
    .line 460
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 461
    :try_start_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHolderBindings:Ljava/util/LinkedList;

    if-nez v1, :cond_0

    .line 462
    new-instance v1, Ljava/util/LinkedList;

    invoke-direct {v1}, Ljava/util/LinkedList;-><init>()V

    iput-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHolderBindings:Ljava/util/LinkedList;

    .line 463
    :cond_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHolderBindings:Ljava/util/LinkedList;

    invoke-virtual {v1, p1}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z

    .line 464
    monitor-exit v0

    .line 465
    return-void

    .line 464
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method protected calcIndex(IIZ)I
    .locals 3
    .parameter "baseIndex"
    .parameter "gap"
    .parameter "bEndless"

    .prologue
    .line 576
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getItemCount()I

    move-result v0

    .line 577
    .local v0, itemCount:I
    rem-int v2, p2, v0

    add-int v1, p1, v2

    .line 579
    .local v1, newIndex:I
    if-eqz p3, :cond_1

    .line 581
    add-int v2, v1, v0

    rem-int v1, v2, v0

    .line 588
    :cond_0
    :goto_0
    return v1

    .line 585
    :cond_1
    if-gez v1, :cond_2

    const/4 v1, 0x0

    goto :goto_0

    .line 586
    :cond_2
    if-lt v1, v0, :cond_0

    const/4 v2, 0x1

    sub-int v1, v0, v2

    goto :goto_0
.end method

.method protected calcTouchVectorMagnitude([FI)F
    .locals 6
    .parameter "forceVector"
    .parameter "tickPassed"

    .prologue
    const-wide/high16 v4, 0x4000

    .line 1472
    const/4 v0, 0x4

    aget v0, p1, v0

    const/4 v1, 0x0

    aget v1, p1, v1

    sub-float/2addr v0, v1

    float-to-double v0, v0

    invoke-static {v0, v1, v4, v5}, Ljava/lang/Math;->pow(DD)D

    move-result-wide v0

    const/4 v2, 0x5

    aget v2, p1, v2

    const/4 v3, 0x1

    aget v3, p1, v3

    sub-float/2addr v2, v3

    float-to-double v2, v2

    invoke-static {v2, v3, v4, v5}, Ljava/lang/Math;->pow(DD)D

    move-result-wide v2

    add-double/2addr v0, v2

    const/4 v2, 0x6

    aget v2, p1, v2

    const/4 v3, 0x2

    aget v3, p1, v3

    sub-float/2addr v2, v3

    float-to-double v2, v2

    invoke-static {v2, v3, v4, v5}, Ljava/lang/Math;->pow(DD)D

    move-result-wide v2

    add-double/2addr v0, v2

    invoke-static {v0, v1}, Ljava/lang/Math;->sqrt(D)D

    move-result-wide v0

    double-to-float v0, v0

    return v0
.end method

.method protected calculateItemIndexOfSlot(I)I
    .locals 3
    .parameter "slotIdx"

    .prologue
    .line 1224
    iget v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadSlotIndex:I

    if-ltz v1, :cond_0

    .line 1225
    iget v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadItemIndex:I

    iget v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadSlotIndex:I

    sub-int v2, p1, v2

    add-int v0, v1, v2

    .line 1226
    .local v0, itemIdx:I
    invoke-virtual {p0, v0}, Lcom/nemustech/tiffany/world/TFHolder;->adjustItemIndex(I)I

    move-result v1

    .line 1229
    .end local v0           #itemIdx:I
    :goto_0
    return v1

    :cond_0
    move v1, p1

    goto :goto_0
.end method

.method protected cancelImage(I)V
    .locals 1
    .parameter "itemIndex"

    .prologue
    .line 569
    iget-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mImageProvider:Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;

    if-eqz v0, :cond_0

    .line 570
    iget-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mImageProvider:Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;

    invoke-interface {v0, p1}, Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;->cancelImage(I)V

    .line 571
    :cond_0
    return-void
.end method

.method public clearHolderBindings()V
    .locals 2

    .prologue
    .line 493
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 494
    :try_start_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHolderBindings:Ljava/util/LinkedList;

    invoke-virtual {v1}, Ljava/util/LinkedList;->clear()V

    .line 495
    monitor-exit v0

    .line 496
    return-void

    .line 495
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public clone()Ljava/lang/Object;
    .locals 7
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/CloneNotSupportedException;
        }
    .end annotation

    .prologue
    .line 60
    const-class v4, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v4

    .line 61
    :try_start_0
    invoke-super {p0}, Lcom/nemustech/tiffany/world/TFObject;->clone()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/nemustech/tiffany/world/TFHolder;

    .line 62
    .local v0, clone:Lcom/nemustech/tiffany/world/TFHolder;
    const-string v3, "CLONE"

    new-instance v5, Ljava/lang/StringBuilder;

    invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V

    const-string v6, "cloning holder: "

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v5

    invoke-virtual {v5, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v5

    const-string v6, " -> "

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v5

    invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v5

    invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v5

    invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 63
    const/4 v3, 0x0

    iput-object v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mCloneList:Ljava/util/LinkedList;

    .line 64
    const/4 v3, 0x0

    iput-object v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mBindingBehaviorDispatcher:Lcom/nemustech/tiffany/world/TFHolder$BindingBehaviorDispatcher;

    .line 65
    const/4 v3, 0x0

    iput-object v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectShiftListener:Lcom/nemustech/tiffany/world/TFHolder$OnObjectShiftListener;

    .line 66
    new-instance v3, Ljava/util/LinkedList;

    invoke-direct {v3}, Ljava/util/LinkedList;-><init>()V

    iput-object v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mHolderBindings:Ljava/util/LinkedList;

    .line 67
    const/4 v3, 0x0

    iput-object v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mCurrentActingHolder:Lcom/nemustech/tiffany/world/TFHolder;

    .line 69
    const/4 v3, 0x0

    iput-boolean v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mTouchDown:Z

    .line 70
    const/4 v3, 0x0

    iput v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mMinorDrag:F

    .line 71
    const/4 v3, 0x0

    iput-boolean v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mDragged:Z

    .line 72
    const/4 v3, 0x0

    iput v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mTOfHitPoint:F

    .line 73
    const/4 v3, 0x0

    iput v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mVelocity:F

    .line 74
    const/4 v3, 0x0

    iput-object v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mMoveAni:Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;

    .line 77
    const/4 v3, 0x0

    iput v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mDeviation:F

    .line 81
    new-instance v3, Landroid/util/SparseIntArray;

    invoke-direct {v3}, Landroid/util/SparseIntArray;-><init>()V

    iput-object v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    .line 82
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    if-nez v3, :cond_3

    .line 83
    new-instance v3, Ljava/util/LinkedList;

    invoke-direct {v3}, Ljava/util/LinkedList;-><init>()V

    iput-object v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    .line 84
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v3}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    .local v1, i$:Ljava/util/Iterator;
    :goto_0
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v3

    if-eqz v3, :cond_1

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lcom/nemustech/tiffany/world/TFObjectContainer;

    .line 85
    .local v2, oc:Lcom/nemustech/tiffany/world/TFObjectContainer;
    iget-boolean v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    if-eqz v3, :cond_0

    .line 86
    invoke-virtual {v2}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v3

    invoke-virtual {v3}, Lcom/nemustech/tiffany/world/TFObject;->clone()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/nemustech/tiffany/world/TFModel;

    iget-object v5, v0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v5}, Ljava/util/LinkedList;->size()I

    move-result v5

    invoke-virtual {v0, v3, v5}, Lcom/nemustech/tiffany/world/TFHolder;->addModel(Lcom/nemustech/tiffany/world/TFModel;I)Z

    goto :goto_0

    .line 124
    .end local v0           #clone:Lcom/nemustech/tiffany/world/TFHolder;
    .end local v1           #i$:Ljava/util/Iterator;
    .end local v2           #oc:Lcom/nemustech/tiffany/world/TFObjectContainer;
    :catchall_0
    move-exception v3

    monitor-exit v4
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v3

    .line 89
    .restart local v0       #clone:Lcom/nemustech/tiffany/world/TFHolder;
    .restart local v1       #i$:Ljava/util/Iterator;
    .restart local v2       #oc:Lcom/nemustech/tiffany/world/TFObjectContainer;
    :cond_0
    :try_start_1
    invoke-virtual {v2}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v3

    invoke-virtual {v3}, Lcom/nemustech/tiffany/world/TFObject;->clone()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/nemustech/tiffany/world/TFHolder;

    iget-object v5, v0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v5}, Ljava/util/LinkedList;->size()I

    move-result v5

    invoke-virtual {v0, v3, v5}, Lcom/nemustech/tiffany/world/TFHolder;->addHolder(Lcom/nemustech/tiffany/world/TFHolder;I)Z

    goto :goto_0

    .line 92
    .end local v2           #oc:Lcom/nemustech/tiffany/world/TFObjectContainer;
    :cond_1
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mImageProvider:Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;

    if-eqz v3, :cond_2

    .line 93
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mImageProvider:Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;

    iput-object v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mImageProvider:Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;

    .line 113
    .end local v1           #i$:Ljava/util/Iterator;
    :cond_2
    :goto_1
    iget v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadItemIndex:I

    iput v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadItemIndex:I

    .line 114
    invoke-virtual {v0}, Lcom/nemustech/tiffany/world/TFHolder;->refreshHolder()V

    .line 116
    invoke-virtual {p0, v0}, Lcom/nemustech/tiffany/world/TFHolder;->bindHolder(Lcom/nemustech/tiffany/world/TFHolder;)V

    .line 117
    invoke-virtual {v0, p0}, Lcom/nemustech/tiffany/world/TFHolder;->bindHolder(Lcom/nemustech/tiffany/world/TFHolder;)V

    .line 118
    const-string v3, "BINDING"

    new-instance v5, Ljava/lang/StringBuilder;

    invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V

    const-string v6, "Holder binding between "

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v5

    invoke-virtual {v5, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v5

    const-string v6, " and "

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v5

    invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v5

    invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v5

    invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 119
    const-string v3, "BINDING"

    new-instance v5, Ljava/lang/StringBuilder;

    invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V

    const-string v6, "Worlds "

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v5

    iget-object v6, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v5

    const-string v6, " and "

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v5

    iget-object v6, v0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v5

    invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v5

    invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 121
    const-string v3, "world"

    new-instance v5, Ljava/lang/StringBuilder;

    invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V

    const-string v6, "Cloning... This is: "

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v5

    invoke-virtual {v5, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v5

    const-string v6, " clone is: "

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v5

    invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v5

    invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v5

    invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 122
    const-string v3, "world"

    new-instance v5, Ljava/lang/StringBuilder;

    invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V

    const-string v6, "TFWorld clone status - this.mWorld: "

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v5

    iget-object v6, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v5

    const-string v6, " clone.mWorld: "

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v5

    iget-object v6, v0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v5

    invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v5

    invoke-static {v3, v5}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 123
    monitor-exit v4

    return-object v0

    .line 97
    :cond_3
    new-instance v3, Ljava/util/LinkedList;

    invoke-direct {v3}, Ljava/util/LinkedList;-><init>()V

    iput-object v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    .line 98
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    invoke-virtual {v3, v0}, Lcom/nemustech/tiffany/world/TFItemProvider;->getClone(Lcom/nemustech/tiffany/world/TFHolder;)Lcom/nemustech/tiffany/world/TFItemProvider;

    move-result-object v3

    iput-object v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    .line 99
    iget-object v3, v0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    instance-of v3, v3, Lcom/nemustech/tiffany/world/TFObjectProvider;

    if-eqz v3, :cond_4

    .line 100
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getSlotCount()I

    move-result v3

    invoke-virtual {v0, v3}, Lcom/nemustech/tiffany/world/TFHolder;->addSlots(I)V

    goto/16 :goto_1

    .line 103
    :cond_4
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v3}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    .restart local v1       #i$:Ljava/util/Iterator;
    :goto_2
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v3

    if-eqz v3, :cond_2

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lcom/nemustech/tiffany/world/TFObjectContainer;

    .line 104
    .restart local v2       #oc:Lcom/nemustech/tiffany/world/TFObjectContainer;
    iget-boolean v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    if-eqz v3, :cond_5

    .line 105
    invoke-virtual {v2}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v3

    invoke-virtual {v3}, Lcom/nemustech/tiffany/world/TFObject;->clone()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/nemustech/tiffany/world/TFModel;

    invoke-virtual {v0, v3}, Lcom/nemustech/tiffany/world/TFHolder;->addModel(Lcom/nemustech/tiffany/world/TFModel;)Z

    goto :goto_2

    .line 108
    :cond_5
    invoke-virtual {v2}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v3

    invoke-virtual {v3}, Lcom/nemustech/tiffany/world/TFObject;->clone()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/nemustech/tiffany/world/TFHolder;

    invoke-virtual {v0, v3}, Lcom/nemustech/tiffany/world/TFHolder;->addHolder(Lcom/nemustech/tiffany/world/TFHolder;)Z
    :try_end_1
    .catchall {:try_start_1 .. :try_end_1} :catchall_0

    goto :goto_2
.end method

.method public createPlaceHolder()Lcom/nemustech/tiffany/world/TFPlaceHolder;
    .locals 5

    .prologue
    .line 370
    const-class v2, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v2

    .line 371
    :try_start_0
    new-instance v1, Lcom/nemustech/tiffany/world/TFPlaceHolder;

    invoke-direct {v1}, Lcom/nemustech/tiffany/world/TFPlaceHolder;-><init>()V

    .line 372
    .local v1, newHolder:Lcom/nemustech/tiffany/world/TFPlaceHolder;
    const/4 v3, 0x1

    invoke-virtual {v1, v3}, Lcom/nemustech/tiffany/world/TFPlaceHolder;->setAutoGeneratedFlag(Z)V

    .line 374
    const/4 v0, 0x0

    .local v0, i:I
    :goto_0
    const/4 v3, 0x3

    if-ge v0, v3, :cond_0

    .line 376
    iget-object v3, v1, Lcom/nemustech/tiffany/world/TFPlaceHolder;->mLocation:[F

    iget-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mLocation:[F

    aget v4, v4, v0

    aput v4, v3, v0

    .line 377
    iget-object v3, v1, Lcom/nemustech/tiffany/world/TFPlaceHolder;->mAngle:[F

    iget-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mAngle:[F

    aget v4, v4, v0

    aput v4, v3, v0

    .line 374
    add-int/lit8 v0, v0, 0x1

    goto :goto_0

    .line 380
    :cond_0
    iget-boolean v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mShouldRotateFirst:Z

    iput-boolean v3, v1, Lcom/nemustech/tiffany/world/TFPlaceHolder;->mShouldRotateFirst:Z

    .line 381
    iget-boolean v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mRotateYFirst:Z

    iput-boolean v3, v1, Lcom/nemustech/tiffany/world/TFPlaceHolder;->mRotateYFirst:Z

    .line 382
    iget-boolean v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mFacingFrontYFirst:Z

    iput-boolean v3, v1, Lcom/nemustech/tiffany/world/TFPlaceHolder;->mFacingFrontYFirst:Z

    .line 384
    monitor-exit v2

    return-object v1

    .line 385
    .end local v0           #i:I
    .end local v1           #newHolder:Lcom/nemustech/tiffany/world/TFPlaceHolder;
    :catchall_0
    move-exception v3

    monitor-exit v2
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v3
.end method

.method protected defaultBindingBehavior(F)V
    .locals 3
    .parameter "step"

    .prologue
    .line 419
    iget-object v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHolderBindings:Ljava/util/LinkedList;

    invoke-virtual {v2}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    .local v1, i$:Ljava/util/Iterator;
    :goto_0
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v2

    if-eqz v2, :cond_0

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/nemustech/tiffany/world/TFHolder;

    .line 420
    .local v0, holder:Lcom/nemustech/tiffany/world/TFHolder;
    const/4 v2, 0x0

    invoke-virtual {v0, p1, v2}, Lcom/nemustech/tiffany/world/TFHolder;->moveHeadModelStep(FZ)Z

    goto :goto_0

    .line 422
    .end local v0           #holder:Lcom/nemustech/tiffany/world/TFHolder;
    :cond_0
    return-void
.end method

.method protected diffIndex(IIZ)I
    .locals 3
    .parameter "indexA"
    .parameter "indexB"
    .parameter "bEndless"

    .prologue
    .line 593
    sub-int v0, p1, p2

    .line 594
    .local v0, gap:I
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getItemCount()I

    move-result v1

    .line 596
    .local v1, itemCount:I
    if-eqz p3, :cond_1

    .line 599
    invoke-static {v0}, Ljava/lang/Math;->abs(I)I

    move-result v2

    rem-int v0, v2, v1

    .line 600
    div-int/lit8 v2, v1, 0x2

    if-le v0, v2, :cond_0

    sub-int v0, v1, v0

    .line 603
    :cond_0
    if-ge p1, p2, :cond_1

    neg-int v0, v0

    .line 605
    :cond_1
    return v0
.end method

.method protected doBindingAction(FFFFI)V
    .locals 0
    .parameter "start_x"
    .parameter "start_y"
    .parameter "end_x"
    .parameter "end_y"
    .parameter "tickPassed"

    .prologue
    .line 549
    return-void
.end method

.method protected draw(Ljavax/microedition/khronos/opengles/GL10;I)V
    .locals 9
    .parameter "gl"
    .parameter "tickPassed"

    .prologue
    .line 1371
    iget-object v6, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    if-eqz v6, :cond_5

    iget-boolean v6, p0, Lcom/nemustech/tiffany/world/TFHolder;->mVisible:Z

    if-eqz v6, :cond_5

    iget-boolean v6, p0, Lcom/nemustech/tiffany/world/TFHolder;->mShouldDraw:Z

    if-eqz v6, :cond_5

    .line 1373
    const/4 v6, 0x1

    invoke-virtual {p0, p1, p2, v6}, Lcom/nemustech/tiffany/world/TFHolder;->updateObject(Ljavax/microedition/khronos/opengles/GL10;IZ)Z

    move-result v6

    if-eqz v6, :cond_0

    .line 1374
    :cond_0
    invoke-virtual {p0, p1, p2}, Lcom/nemustech/tiffany/world/TFHolder;->applyOpacity(Ljavax/microedition/khronos/opengles/GL10;I)V

    .line 1376
    iget-object v6, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    iget-boolean v6, v6, Lcom/nemustech/tiffany/world/TFWorld;->mBanQueryingMatrix:Z

    if-nez v6, :cond_1

    .line 1377
    move-object v0, p1

    check-cast v0, Lcom/nemustech/tiffany/world/TFGL;

    move-object v6, v0

    iget-object v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMatrix:[F

    const/4 v8, 0x0

    invoke-virtual {v6, v7, v8}, Lcom/nemustech/tiffany/world/TFGL;->getMatrix([FI)V

    .line 1381
    :cond_1
    iget-object v6, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    iget-boolean v6, v6, Lcom/nemustech/tiffany/world/TFWorld;->mBlendingSort:Z

    if-eqz v6, :cond_2

    .line 1383
    new-instance v5, Ljava/util/LinkedList;

    iget-object v6, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-direct {v5, v6}, Ljava/util/LinkedList;-><init>(Ljava/util/Collection;)V

    .line 1384
    .local v5, objects:Ljava/util/LinkedList;,"Ljava/util/LinkedList<Lcom/nemustech/tiffany/world/TFObjectContainer;>;"
    sget-object v6, Lcom/nemustech/tiffany/world/TFObjectContainer;->compareAxisZ:Ljava/util/Comparator;

    invoke-static {v5, v6}, Ljava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V

    .line 1386
    invoke-virtual {v5}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v2

    .local v2, i$:Ljava/util/Iterator;
    :goto_0
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v6

    if-eqz v6, :cond_5

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/nemustech/tiffany/world/TFObjectContainer;

    .line 1387
    .local v3, o:Lcom/nemustech/tiffany/world/TFObjectContainer;
    invoke-direct {p0, p1, p2, v3}, Lcom/nemustech/tiffany/world/TFHolder;->renderChild(Ljavax/microedition/khronos/opengles/GL10;ILcom/nemustech/tiffany/world/TFObjectContainer;)V

    goto :goto_0

    .line 1392
    .end local v2           #i$:Ljava/util/Iterator;
    .end local v3           #o:Lcom/nemustech/tiffany/world/TFObjectContainer;
    .end local v5           #objects:Ljava/util/LinkedList;,"Ljava/util/LinkedList<Lcom/nemustech/tiffany/world/TFObjectContainer;>;"
    :cond_2
    iget-object v5, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    .line 1393
    .restart local v5       #objects:Ljava/util/LinkedList;,"Ljava/util/LinkedList<Lcom/nemustech/tiffany/world/TFObjectContainer;>;"
    iget-object v6, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v6}, Ljava/util/LinkedList;->size()I

    move-result v4

    .line 1396
    .local v4, objectCount:I
    iget-object v6, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    if-eqz v6, :cond_3

    iget-object v6, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    invoke-virtual {v6}, Landroid/util/SparseIntArray;->size()I

    move-result v6

    if-eq v6, v4, :cond_3

    .line 1397
    const-string v6, "TFHolder"

    new-instance v7, Ljava/lang/StringBuilder;

    invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V

    const-string v8, "DrawOrder size:"

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    iget-object v8, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    invoke-virtual {v8}, Landroid/util/SparseIntArray;->size()I

    move-result v8

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v7

    const-string v8, ", object count:"

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v7

    invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 1398
    new-instance v6, Ljava/lang/IllegalStateException;

    const-string v7, "DrawingCount does not match with ObjectSlot count."

    invoke-direct {v6, v7}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v6

    .line 1401
    :cond_3
    const/4 v1, 0x0

    .local v1, i:I
    :goto_1
    if-ge v1, v4, :cond_5

    .line 1402
    iget-object v6, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    if-nez v6, :cond_4

    move v6, v1

    :goto_2
    invoke-virtual {v5, v6}, Ljava/util/LinkedList;->get(I)Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/nemustech/tiffany/world/TFObjectContainer;

    .line 1403
    .restart local v3       #o:Lcom/nemustech/tiffany/world/TFObjectContainer;
    invoke-direct {p0, p1, p2, v3}, Lcom/nemustech/tiffany/world/TFHolder;->renderChild(Ljavax/microedition/khronos/opengles/GL10;ILcom/nemustech/tiffany/world/TFObjectContainer;)V

    .line 1401
    add-int/lit8 v1, v1, 0x1

    goto :goto_1

    .line 1402
    .end local v3           #o:Lcom/nemustech/tiffany/world/TFObjectContainer;
    :cond_4
    iget-object v6, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    invoke-virtual {v6, v1}, Landroid/util/SparseIntArray;->get(I)I

    move-result v6

    goto :goto_2

    .line 1407
    .end local v1           #i:I
    .end local v4           #objectCount:I
    .end local v5           #objects:Ljava/util/LinkedList;,"Ljava/util/LinkedList<Lcom/nemustech/tiffany/world/TFObjectContainer;>;"
    :cond_5
    return-void
.end method

.method protected dumpObjectInSlots()V
    .locals 9

    .prologue
    const/4 v8, 0x0

    .line 1346
    const/4 v0, 0x0

    .line 1347
    .local v0, i:I
    const-string v3, "TFHolder"

    const-string v4, "-------------------------------------"

    new-array v5, v8, [Ljava/lang/Object;

    invoke-static {v4, v5}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v4

    invoke-static {v3, v4}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 1348
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v3}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    .local v1, i$:Ljava/util/Iterator;
    :goto_0
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v3

    if-eqz v3, :cond_0

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lcom/nemustech/tiffany/world/TFObjectContainer;

    .line 1349
    .local v2, o:Lcom/nemustech/tiffany/world/TFObjectContainer;
    const-string v3, "TFHolder"

    const-string v4, "dumpModelList - slotIndex: %d, itemIndex: %d"

    const/4 v5, 0x2

    new-array v5, v5, [Ljava/lang/Object;

    invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v6

    aput-object v6, v5, v8

    const/4 v6, 0x1

    invoke-virtual {v2}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v7

    invoke-virtual {v7}, Lcom/nemustech/tiffany/world/TFObject;->getItemIndex()I

    move-result v7

    invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v7

    aput-object v7, v5, v6

    invoke-static {v4, v5}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v4

    invoke-static {v3, v4}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 1350
    add-int/lit8 v0, v0, 0x1

    goto :goto_0

    .line 1352
    .end local v2           #o:Lcom/nemustech/tiffany/world/TFObjectContainer;
    :cond_0
    return-void
.end method

.method genTexture(Ljavax/microedition/khronos/opengles/GL10;)V
    .locals 6
    .parameter "gl"

    .prologue
    .line 1107
    iget-boolean v5, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    if-eqz v5, :cond_1

    .line 1109
    const/4 v1, 0x0

    .local v1, i:I
    :goto_0
    iget-object v5, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v5}, Ljava/util/LinkedList;->size()I

    move-result v5

    if-ge v1, v5, :cond_3

    .line 1110
    iget-object v5, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v5, v1}, Ljava/util/LinkedList;->get(I)Ljava/lang/Object;

    move-result-object v5

    check-cast v5, Lcom/nemustech/tiffany/world/TFObjectContainer;

    invoke-virtual {v5}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v3

    check-cast v3, Lcom/nemustech/tiffany/world/TFModel;

    .line 1111
    .local v3, model:Lcom/nemustech/tiffany/world/TFModel;
    if-eqz v3, :cond_0

    .line 1112
    invoke-virtual {v3, p1}, Lcom/nemustech/tiffany/world/TFModel;->genTexture(Ljavax/microedition/khronos/opengles/GL10;)V

    .line 1109
    :cond_0
    add-int/lit8 v1, v1, 0x1

    goto :goto_0

    .line 1117
    .end local v1           #i:I
    .end local v3           #model:Lcom/nemustech/tiffany/world/TFModel;
    :cond_1
    iget-object v5, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v5}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v2

    .local v2, i$:Ljava/util/Iterator;
    :cond_2
    :goto_1
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v5

    if-eqz v5, :cond_3

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Lcom/nemustech/tiffany/world/TFObjectContainer;

    .line 1118
    .local v4, oc:Lcom/nemustech/tiffany/world/TFObjectContainer;
    invoke-virtual {v4}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v0

    check-cast v0, Lcom/nemustech/tiffany/world/TFHolder;

    .line 1119
    .local v0, holder:Lcom/nemustech/tiffany/world/TFHolder;
    if-eqz v0, :cond_2

    .line 1120
    invoke-virtual {v0, p1}, Lcom/nemustech/tiffany/world/TFHolder;->genTexture(Ljavax/microedition/khronos/opengles/GL10;)V

    goto :goto_1

    .line 1123
    .end local v0           #holder:Lcom/nemustech/tiffany/world/TFHolder;
    .end local v2           #i$:Ljava/util/Iterator;
    .end local v4           #oc:Lcom/nemustech/tiffany/world/TFObjectContainer;
    :cond_3
    return-void
.end method

.method public getDeceleration()F
    .locals 2

    .prologue
    .line 1610
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1611
    :try_start_0
    iget v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDeceleration:F

    monitor-exit v0

    return v1

    .line 1612
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getDeviation()F
    .locals 2

    .prologue
    .line 1280
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1281
    :try_start_0
    iget v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDeviation:F

    monitor-exit v0

    return v1

    .line 1282
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method protected getDeviation(F)F
    .locals 3
    .parameter "step"

    .prologue
    const/high16 v2, 0x3f80

    .line 1317
    float-to-int v1, p1

    int-to-float v1, v1

    sub-float v0, p1, v1

    .line 1318
    .local v0, deviation:F
    const/high16 v1, 0x3f00

    cmpl-float v1, v0, v1

    if-lez v1, :cond_1

    .line 1319
    sub-float/2addr v0, v2

    .line 1322
    :cond_0
    :goto_0
    return v0

    .line 1320
    :cond_1
    const/high16 v1, -0x4100

    cmpg-float v1, v0, v1

    if-gez v1, :cond_0

    .line 1321
    add-float/2addr v0, v2

    goto :goto_0
.end method

.method public getHeadHolder()Lcom/nemustech/tiffany/world/TFHolder;
    .locals 2

    .prologue
    .line 1015
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1016
    :try_start_0
    iget-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    if-nez v1, :cond_0

    .line 1017
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getHeadObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object p0

    .end local p0
    check-cast p0, Lcom/nemustech/tiffany/world/TFHolder;

    monitor-exit v0

    move-object v0, p0

    .line 1018
    :goto_0
    return-object v0

    .restart local p0
    :cond_0
    const/4 v1, 0x0

    monitor-exit v0

    move-object v0, v1

    goto :goto_0

    .line 1019
    .end local p0
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getHeadItemIndex()I
    .locals 5

    .prologue
    .line 353
    const-class v1, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v1

    .line 354
    :try_start_0
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getHeadSlotIndex()I

    move-result v2

    if-ltz v2, :cond_1

    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getHeadSlotIndex()I

    move-result v2

    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getSlotCount()I

    move-result v3

    if-ge v2, v3, :cond_1

    .line 355
    iget-object v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    iget v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadSlotIndex:I

    invoke-virtual {v2, v3}, Ljava/util/LinkedList;->get(I)Ljava/lang/Object;

    move-result-object p0

    .end local p0
    check-cast p0, Lcom/nemustech/tiffany/world/TFObjectContainer;

    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v0

    .line 356
    .local v0, object:Lcom/nemustech/tiffany/world/TFObject;
    if-eqz v0, :cond_0

    .line 357
    invoke-virtual {v0}, Lcom/nemustech/tiffany/world/TFObject;->getItemIndex()I

    move-result v2

    monitor-exit v1

    return v2

    .line 360
    :cond_0
    new-instance v2, Ljava/lang/IllegalArgumentException;

    const-string v3, "No object in Head Slot Index of Holder."

    invoke-direct {v2, v3}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v2

    .line 366
    .end local v0           #object:Lcom/nemustech/tiffany/world/TFObject;
    :catchall_0
    move-exception v2

    monitor-exit v1
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v2

    .line 364
    .restart local p0
    :cond_1
    :try_start_1
    new-instance v2, Ljava/lang/IllegalArgumentException;

    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    const-string v4, "Head Slot index out of bounds. Slot Count: "

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getSlotCount()I

    move-result v4

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v3

    const-string v4, " Head Slot Index: "

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getHeadSlotIndex()I

    move-result v4

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v3

    invoke-direct {v2, v3}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v2
    :try_end_1
    .catchall {:try_start_1 .. :try_end_1} :catchall_0
.end method

.method public getHeadModel()Lcom/nemustech/tiffany/world/TFModel;
    .locals 2

    .prologue
    .line 1002
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1003
    :try_start_0
    iget-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    if-eqz v1, :cond_0

    .line 1004
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getHeadObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object p0

    .end local p0
    check-cast p0, Lcom/nemustech/tiffany/world/TFModel;

    monitor-exit v0

    move-object v0, p0

    .line 1005
    :goto_0
    return-object v0

    .restart local p0
    :cond_0
    const/4 v1, 0x0

    monitor-exit v0

    move-object v0, v1

    goto :goto_0

    .line 1006
    .end local p0
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getHeadObject()Lcom/nemustech/tiffany/world/TFObject;
    .locals 3

    .prologue
    .line 1028
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1029
    :try_start_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    iget v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadSlotIndex:I

    invoke-virtual {v1, v2}, Ljava/util/LinkedList;->get(I)Ljava/lang/Object;

    move-result-object p0

    .end local p0
    check-cast p0, Lcom/nemustech/tiffany/world/TFObjectContainer;

    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v1

    monitor-exit v0

    return-object v1

    .line 1030
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getHeadSlotIndex()I
    .locals 2

    .prologue
    .line 1038
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1039
    :try_start_0
    iget v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadSlotIndex:I

    monitor-exit v0

    return v1

    .line 1040
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public abstract getHeadSlotIndex(I)I
.end method

.method public getHolderBindings()Ljava/util/LinkedList;
    .locals 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/LinkedList",
            "<",
            "Lcom/nemustech/tiffany/world/TFHolder;",
            ">;"
        }
    .end annotation

    .prologue
    .line 468
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 469
    :try_start_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHolderBindings:Ljava/util/LinkedList;

    monitor-exit v0

    return-object v1

    .line 470
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getHolderByItemIndex(I)Lcom/nemustech/tiffany/world/TFHolder;
    .locals 2
    .parameter "itemIdx"

    .prologue
    .line 975
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 976
    :try_start_0
    iget-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    if-nez v1, :cond_0

    .line 977
    invoke-virtual {p0, p1}, Lcom/nemustech/tiffany/world/TFHolder;->getObjectInSlotByItemIndex(I)Lcom/nemustech/tiffany/world/TFObject;

    move-result-object p0

    .end local p0
    check-cast p0, Lcom/nemustech/tiffany/world/TFHolder;

    monitor-exit v0

    move-object v0, p0

    .line 979
    :goto_0
    return-object v0

    .restart local p0
    :cond_0
    const/4 v1, 0x0

    monitor-exit v0

    move-object v0, v1

    goto :goto_0

    .line 980
    .end local p0
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getHolderInSlot(I)Lcom/nemustech/tiffany/world/TFHolder;
    .locals 3
    .parameter "index"

    .prologue
    .line 931
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 932
    :try_start_0
    iget-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    if-nez v1, :cond_0

    .line 933
    invoke-virtual {p0, p1}, Lcom/nemustech/tiffany/world/TFHolder;->getObjectInSlot(I)Lcom/nemustech/tiffany/world/TFObject;

    move-result-object p0

    .end local p0
    check-cast p0, Lcom/nemustech/tiffany/world/TFHolder;

    monitor-exit v0

    return-object p0

    .line 935
    .restart local p0
    :cond_0
    new-instance v1, Ljava/lang/IllegalArgumentException;

    const-string v2, "The holder which getModelInSlot() was called on is a terminal holder, and does not contain any holder."

    invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v1

    .line 937
    .end local p0
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getItemCount()I
    .locals 2

    .prologue
    .line 211
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 213
    :try_start_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mImageProvider:Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;

    if-eqz v1, :cond_0

    .line 214
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mImageProvider:Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;

    invoke-interface {v1}, Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;->getTotalImageCount()I

    move-result v1

    monitor-exit v0

    move v0, v1

    .line 218
    :goto_0
    return v0

    .line 215
    :cond_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    if-eqz v1, :cond_1

    .line 216
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    invoke-virtual {v1}, Lcom/nemustech/tiffany/world/TFItemProvider;->getItemCount()I

    move-result v1

    monitor-exit v0

    move v0, v1

    goto :goto_0

    .line 218
    :cond_1
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v1}, Ljava/util/LinkedList;->size()I

    move-result v1

    monitor-exit v0

    move v0, v1

    goto :goto_0

    .line 219
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getItemIndexOfSlot(I)I
    .locals 2
    .parameter "slotIdx"

    .prologue
    .line 1216
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1217
    :try_start_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v1, p1}, Ljava/util/LinkedList;->get(I)Ljava/lang/Object;

    move-result-object p0

    .end local p0
    check-cast p0, Lcom/nemustech/tiffany/world/TFObjectContainer;

    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v1

    invoke-virtual {v1}, Lcom/nemustech/tiffany/world/TFObject;->getItemIndex()I

    move-result v1

    monitor-exit v0

    return v1

    .line 1218
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method protected getItemOffset(II)I
    .locals 5
    .parameter "itemIndex1"
    .parameter "itemIndex2"

    .prologue
    .line 672
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getItemCount()I

    move-result v0

    .line 673
    .local v0, itemCount:I
    sub-int v2, p2, p1

    .line 674
    .local v2, offset:I
    iget-boolean v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWraparound:Z

    if-eqz v3, :cond_0

    .line 675
    move v1, v2

    .line 676
    .local v1, off:I
    if-lez v2, :cond_1

    .line 677
    sub-int v1, v2, v0

    .line 680
    :goto_0
    invoke-static {v1}, Ljava/lang/Math;->abs(I)I

    move-result v3

    invoke-static {v2}, Ljava/lang/Math;->abs(I)I

    move-result v4

    if-ge v3, v4, :cond_0

    .line 681
    move v2, v1

    .line 683
    .end local v1           #off:I
    :cond_0
    return v2

    .line 679
    .restart local v1       #off:I
    :cond_1
    add-int v1, v2, v0

    goto :goto_0
.end method

.method protected getItemOffsetToHead(I)I
    .locals 1
    .parameter "itemIndex"

    .prologue
    .line 691
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getHeadItemIndex()I

    move-result v0

    invoke-virtual {p0, v0, p1}, Lcom/nemustech/tiffany/world/TFHolder;->getItemOffset(II)I

    move-result v0

    return v0
.end method

.method public getItemProvider()Lcom/nemustech/tiffany/world/TFItemProvider;
    .locals 2

    .prologue
    .line 344
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 345
    :try_start_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    monitor-exit v0

    return-object v1

    .line 346
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getLockStatus()Z
    .locals 2

    .prologue
    .line 1637
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1638
    :try_start_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mParentHolder:Lcom/nemustech/tiffany/world/TFHolder;

    if-nez v1, :cond_0

    .line 1639
    invoke-super {p0}, Lcom/nemustech/tiffany/world/TFObject;->getLockStatus()Z

    move-result v1

    monitor-exit v0

    move v0, v1

    .line 1643
    :goto_0
    return v0

    .line 1640
    :cond_0
    invoke-super {p0}, Lcom/nemustech/tiffany/world/TFObject;->getLockStatus()Z

    move-result v1

    if-nez v1, :cond_1

    .line 1641
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mParentHolder:Lcom/nemustech/tiffany/world/TFHolder;

    invoke-virtual {v1}, Lcom/nemustech/tiffany/world/TFHolder;->getLockStatus()Z

    move-result v1

    monitor-exit v0

    move v0, v1

    goto :goto_0

    .line 1643
    :cond_1
    const/4 v1, 0x1

    monitor-exit v0

    move v0, v1

    goto :goto_0

    .line 1644
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getModelInSlot(I)Lcom/nemustech/tiffany/world/TFModel;
    .locals 3
    .parameter "index"

    .prologue
    .line 915
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 916
    :try_start_0
    iget-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    if-eqz v1, :cond_0

    .line 917
    invoke-virtual {p0, p1}, Lcom/nemustech/tiffany/world/TFHolder;->getObjectInSlot(I)Lcom/nemustech/tiffany/world/TFObject;

    move-result-object p0

    .end local p0
    check-cast p0, Lcom/nemustech/tiffany/world/TFModel;

    monitor-exit v0

    return-object p0

    .line 919
    .restart local p0
    :cond_0
    new-instance v1, Ljava/lang/IllegalArgumentException;

    const-string v2, "The holder which getModelInSlot() was called on is not a terminal holder, and does note contain any model"

    invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v1

    .line 921
    .end local p0
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getModelInSlotByItemIndex(I)Lcom/nemustech/tiffany/world/TFModel;
    .locals 2
    .parameter "itemIdx"

    .prologue
    .line 961
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 962
    :try_start_0
    iget-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    if-eqz v1, :cond_0

    .line 963
    invoke-virtual {p0, p1}, Lcom/nemustech/tiffany/world/TFHolder;->getObjectInSlotByItemIndex(I)Lcom/nemustech/tiffany/world/TFObject;

    move-result-object p0

    .end local p0
    check-cast p0, Lcom/nemustech/tiffany/world/TFModel;

    monitor-exit v0

    move-object v0, p0

    .line 965
    :goto_0
    return-object v0

    .restart local p0
    :cond_0
    const/4 v1, 0x0

    monitor-exit v0

    move-object v0, v1

    goto :goto_0

    .line 966
    .end local p0
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getMoveAnimation()Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;
    .locals 2

    .prologue
    .line 1990
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1991
    :try_start_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMoveAni:Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;

    monitor-exit v0

    return-object v1

    .line 1992
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getObjectInSlot(I)Lcom/nemustech/tiffany/world/TFObject;
    .locals 2
    .parameter "idx"

    .prologue
    .line 898
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 899
    :try_start_0
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getSlotCount()I

    move-result v1

    if-ge p1, v1, :cond_0

    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getSlotCount()I

    move-result v1

    if-eqz v1, :cond_0

    .line 900
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v1, p1}, Ljava/util/LinkedList;->get(I)Ljava/lang/Object;

    move-result-object p0

    .end local p0
    check-cast p0, Lcom/nemustech/tiffany/world/TFObjectContainer;

    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v1

    monitor-exit v0

    move-object v0, v1

    .line 903
    :goto_0
    return-object v0

    .restart local p0
    :cond_0
    const/4 v1, 0x0

    monitor-exit v0

    move-object v0, v1

    goto :goto_0

    .line 905
    .end local p0
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getObjectInSlotByItemIndex(I)Lcom/nemustech/tiffany/world/TFObject;
    .locals 4
    .parameter "itemIdx"

    .prologue
    .line 946
    const-class v2, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v2

    .line 947
    :try_start_0
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v3}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v0

    .local v0, i$:Ljava/util/Iterator;
    :cond_0
    invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z

    move-result v3

    if-eqz v3, :cond_1

    invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/nemustech/tiffany/world/TFObjectContainer;

    .line 948
    .local v1, m:Lcom/nemustech/tiffany/world/TFObjectContainer;
    invoke-virtual {v1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v3

    invoke-virtual {v3}, Lcom/nemustech/tiffany/world/TFObject;->getItemIndex()I

    move-result v3

    if-ne v3, p1, :cond_0

    .line 949
    invoke-virtual {v1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v3

    monitor-exit v2

    move-object v2, v3

    .line 951
    .end local v1           #m:Lcom/nemustech/tiffany/world/TFObjectContainer;
    :goto_0
    return-object v2

    :cond_1
    const/4 v3, 0x0

    monitor-exit v2

    move-object v2, v3

    goto :goto_0

    .line 952
    .end local v0           #i$:Ljava/util/Iterator;
    :catchall_0
    move-exception v3

    monitor-exit v2
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v3
.end method

.method protected getOffset(F)I
    .locals 3
    .parameter "step"

    .prologue
    const/high16 v2, 0x3f00

    .line 1325
    float-to-int v1, p1

    int-to-float v1, v1

    sub-float v0, p1, v1

    .line 1326
    .local v0, deviation:F
    cmpl-float v1, v0, v2

    if-lez v1, :cond_1

    .line 1327
    add-float/2addr p1, v2

    .line 1330
    :cond_0
    :goto_0
    float-to-int v1, p1

    return v1

    .line 1328
    :cond_1
    const/high16 v1, -0x4100

    cmpg-float v1, v0, v1

    if-gez v1, :cond_0

    .line 1329
    sub-float/2addr p1, v2

    goto :goto_0
.end method

.method public getSensitivity()F
    .locals 2

    .prologue
    .line 1631
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1632
    :try_start_0
    iget v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mSensitivity:F

    monitor-exit v0

    return v1

    .line 1633
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getSlotCount()I
    .locals 2

    .prologue
    .line 887
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 888
    :try_start_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v1}, Ljava/util/LinkedList;->size()I

    move-result v1

    monitor-exit v0

    return v1

    .line 889
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getSlotIndex(Lcom/nemustech/tiffany/world/TFObject;)I
    .locals 3
    .parameter "object"

    .prologue
    .line 991
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 992
    :try_start_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {p1}, Lcom/nemustech/tiffany/world/TFObject;->getWrapperObject()Lcom/nemustech/tiffany/world/TFObjectContainer;

    move-result-object v2

    invoke-virtual {v1, v2}, Ljava/util/LinkedList;->indexOf(Ljava/lang/Object;)I

    move-result v1

    monitor-exit v0

    return v1

    .line 993
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public getUpdateHolderListener()Lcom/nemustech/tiffany/world/TFHolder$OnUpdateHolderListener;
    .locals 2

    .prologue
    .line 283
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 284
    :try_start_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mOnUpdateHolderListener:Lcom/nemustech/tiffany/world/TFHolder$OnUpdateHolderListener;

    monitor-exit v0

    return-object v1

    .line 285
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method protected handleDown(Lcom/nemustech/tiffany/world/TFModel;IFF)V
    .locals 7
    .parameter "selectedModel"
    .parameter "faceIndex"
    .parameter "x"
    .parameter "y"

    .prologue
    const/4 v5, 0x4

    const/4 v6, 0x1

    const/4 v1, 0x0

    .line 1411
    invoke-virtual {p1, p2, p3, p4}, Lcom/nemustech/tiffany/world/TFModel;->handleDown(IFF)Z

    move-result v0

    if-eqz v0, :cond_0

    .line 1431
    :goto_0
    return-void

    .line 1413
    :cond_0
    iget-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMoveAni:Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;

    invoke-virtual {v0}, Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;->hasEnded()Z

    move-result v0

    if-nez v0, :cond_1

    .line 1414
    iget-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMoveAni:Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;

    invoke-virtual {v0, v1}, Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;->reset(Z)V

    .line 1417
    :cond_1
    iput-boolean v6, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTouchDown:Z

    .line 1419
    iget-object v0, p1, Lcom/nemustech/tiffany/world/TFModel;->mHitPoint:[F

    iget-object v2, p1, Lcom/nemustech/tiffany/world/TFModel;->mHitTestLine:[F

    iget-object v4, p1, Lcom/nemustech/tiffany/world/TFModel;->mHitTestLine:[F

    move v3, v1

    invoke-static/range {v0 .. v5}, Lcom/nemustech/tiffany/world/TFVector3D;->getTOfPointOnLine([FI[FI[FI)F

    move-result v0

    iput v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTOfHitPoint:F

    .line 1424
    iget v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTOfHitPoint:F

    invoke-static {v0}, Ljava/lang/Float;->isNaN(F)Z

    move-result v0

    if-eqz v0, :cond_2

    .line 1425
    const-string v0, "TFHolder"

    const-string v2, "INVALID POINT (%f,%f,%f)"

    const/4 v3, 0x3

    new-array v3, v3, [Ljava/lang/Object;

    iget-object v4, p1, Lcom/nemustech/tiffany/world/TFModel;->mHitPoint:[F

    aget v4, v4, v5

    invoke-static {v4}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v4

    aput-object v4, v3, v1

    iget-object v4, p1, Lcom/nemustech/tiffany/world/TFModel;->mHitPoint:[F

    const/4 v5, 0x5

    aget v4, v4, v5

    invoke-static {v4}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v4

    aput-object v4, v3, v6

    const/4 v4, 0x2

    iget-object v5, p1, Lcom/nemustech/tiffany/world/TFModel;->mHitPoint:[F

    const/4 v6, 0x6

    aget v5, v5, v6

    invoke-static {v5}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v5

    aput-object v5, v3, v4

    invoke-static {v2, v3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v2

    invoke-static {v0, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 1426
    iput-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTouchDown:Z

    goto :goto_0

    .line 1429
    :cond_2
    invoke-virtual {p0, p1, p3, p4}, Lcom/nemustech/tiffany/world/TFHolder;->onTouchDown(Lcom/nemustech/tiffany/world/TFModel;FF)V

    goto :goto_0
.end method

.method protected handleDrag(Lcom/nemustech/tiffany/world/TFModel;FFFFI)V
    .locals 1
    .parameter "selectedModel"
    .parameter "startX"
    .parameter "startY"
    .parameter "endX"
    .parameter "endY"
    .parameter "tickPassed"

    .prologue
    .line 1461
    invoke-virtual/range {p1 .. p6}, Lcom/nemustech/tiffany/world/TFModel;->handleDrag(FFFFI)Z

    move-result v0

    if-eqz v0, :cond_1

    .line 1469
    :cond_0
    :goto_0
    return-void

    .line 1463
    :cond_1
    iget-boolean v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTouchDown:Z

    if-eqz v0, :cond_0

    .line 1465
    if-lez p6, :cond_0

    .line 1468
    invoke-virtual/range {p0 .. p6}, Lcom/nemustech/tiffany/world/TFHolder;->onTouchDrag(Lcom/nemustech/tiffany/world/TFModel;FFFFI)V

    goto :goto_0
.end method

.method public handleTextureMemory(Z)V
    .locals 2
    .parameter "shouldFree"

    .prologue
    .line 2002
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 2003
    const/4 v1, 0x1

    :try_start_0
    invoke-static {p0, v1, p1}, Lcom/nemustech/tiffany/world/TFRenderer;->removeHelper(Lcom/nemustech/tiffany/world/TFHolder;ZZ)V

    .line 2004
    monitor-exit v0

    .line 2005
    return-void

    .line 2004
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method protected handleUp(Lcom/nemustech/tiffany/world/TFModel;FF)V
    .locals 5
    .parameter "selectedModel"
    .parameter "x"
    .parameter "y"

    .prologue
    const/4 v4, 0x0

    const/4 v3, 0x0

    .line 1435
    invoke-virtual {p1, p2, p3}, Lcom/nemustech/tiffany/world/TFModel;->handleUp(FF)Z

    move-result v0

    if-eqz v0, :cond_0

    .line 1457
    :goto_0
    return-void

    .line 1437
    :cond_0
    iput-boolean v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTouchDown:Z

    .line 1438
    iget v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mVelocity:F

    cmpl-float v0, v0, v3

    if-eqz v0, :cond_2

    .line 1440
    iget-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMoveAni:Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;

    iget v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mVelocity:F

    iget v2, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDeceleration:F

    invoke-virtual {v0, v1, v2}, Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;->startMoveAnimation(FF)V

    .line 1450
    :cond_1
    :goto_1
    iput v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMinorDrag:F

    .line 1451
    iput-boolean v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDragged:Z

    .line 1452
    iput v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mVelocity:F

    .line 1453
    iget-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mParentHolder:Lcom/nemustech/tiffany/world/TFHolder;

    if-eqz v0, :cond_4

    .line 1454
    iget-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mParentHolder:Lcom/nemustech/tiffany/world/TFHolder;

    invoke-virtual {v0, p1, p2, p3}, Lcom/nemustech/tiffany/world/TFHolder;->handleUp(Lcom/nemustech/tiffany/world/TFModel;FF)V

    goto :goto_0

    .line 1444
    :cond_2
    iget-boolean v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDragged:Z

    if-eqz v0, :cond_3

    .line 1445
    iget-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMoveAni:Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;

    invoke-virtual {v0, v4}, Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;->reset(Z)V

    .line 1447
    :cond_3
    iget-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMoveAni:Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;

    iget-boolean v0, v0, Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;->mAutoRepositionMode:Z

    if-eqz v0, :cond_1

    .line 1448
    iget-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMoveAni:Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;

    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMoveAni:Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;

    iget v1, v1, Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;->mAutoRepositionDuration:I

    invoke-virtual {v0, v1}, Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;->repositionObjects(I)Z

    goto :goto_1

    .line 1456
    :cond_4
    invoke-virtual {p0, p1, p2, p3}, Lcom/nemustech/tiffany/world/TFHolder;->onTouchUp(Lcom/nemustech/tiffany/world/TFModel;FF)V

    goto :goto_0
.end method

.method public isEndlessMode()Z
    .locals 2

    .prologue
    .line 240
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 241
    :try_start_0
    iget-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWraparound:Z

    monitor-exit v0

    return v1

    .line 242
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public isTerminalHolder()Z
    .locals 1

    .prologue
    .line 705
    iget-boolean v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    return v0
.end method

.method public isTouchDown()Z
    .locals 2

    .prologue
    .line 1600
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1601
    :try_start_0
    iget-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTouchDown:Z

    monitor-exit v0

    return v1

    .line 1602
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public abstract layoutObjects(F)V
.end method

.method public moveHeadModelStep(F)Z
    .locals 1
    .parameter "step"

    .prologue
    .line 1313
    const/4 v0, 0x1

    invoke-virtual {p0, p1, v0}, Lcom/nemustech/tiffany/world/TFHolder;->moveHeadModelStep(FZ)Z

    move-result v0

    return v0
.end method

.method public abstract moveHeadModelStep(FZ)Z
.end method

.method protected onAddHolder(Lcom/nemustech/tiffany/world/TFObject;I)V
    .locals 0
    .parameter "object"
    .parameter "modelIndex"

    .prologue
    .line 1549
    invoke-virtual {p0, p1, p2}, Lcom/nemustech/tiffany/world/TFHolder;->onAddModel(Lcom/nemustech/tiffany/world/TFObject;I)V

    .line 1550
    return-void
.end method

.method protected onAddModel(Lcom/nemustech/tiffany/world/TFObject;I)V
    .locals 0
    .parameter "object"
    .parameter "modelIndex"

    .prologue
    .line 1564
    return-void
.end method

.method protected onAddSlots(I)V
    .locals 0
    .parameter "addedSlots"

    .prologue
    .line 1545
    return-void
.end method

.method onBindingAnimationEnd(Lcom/nemustech/tiffany/world/TFAnimation;)V
    .locals 4
    .parameter "animation"

    .prologue
    .line 445
    invoke-virtual {p1}, Lcom/nemustech/tiffany/world/TFAnimation;->getSubject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v3

    check-cast v3, Lcom/nemustech/tiffany/world/TFHolder;

    invoke-virtual {v3}, Lcom/nemustech/tiffany/world/TFHolder;->getHolderBindings()Ljava/util/LinkedList;

    move-result-object v0

    .line 446
    .local v0, holderBindings:Ljava/util/LinkedList;,"Ljava/util/LinkedList<Lcom/nemustech/tiffany/world/TFHolder;>;"
    invoke-virtual {v0}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    .local v1, i$:Ljava/util/Iterator;
    :cond_0
    :goto_0
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v3

    if-eqz v3, :cond_1

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lcom/nemustech/tiffany/world/TFHolder;

    .line 447
    .local v2, m:Lcom/nemustech/tiffany/world/TFHolder;
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mCurrentActingHolder:Lcom/nemustech/tiffany/world/TFHolder;

    invoke-virtual {v2, v3}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z

    move-result v3

    if-nez v3, :cond_0

    .line 448
    invoke-virtual {v2}, Lcom/nemustech/tiffany/world/TFHolder;->getMoveAnimation()Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;

    move-result-object v3

    invoke-virtual {v3}, Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;->setOriginalAutoRepositionMode()V

    goto :goto_0

    .line 451
    .end local v2           #m:Lcom/nemustech/tiffany/world/TFHolder;
    :cond_1
    return-void
.end method

.method onBindingAnimationStart(Lcom/nemustech/tiffany/world/TFAnimation;)V
    .locals 6
    .parameter "animation"

    .prologue
    .line 433
    invoke-virtual {p1}, Lcom/nemustech/tiffany/world/TFAnimation;->getSubject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v0

    check-cast v0, Lcom/nemustech/tiffany/world/TFHolder;

    .line 434
    .local v0, holder:Lcom/nemustech/tiffany/world/TFHolder;
    invoke-virtual {v0}, Lcom/nemustech/tiffany/world/TFHolder;->getHolderBindings()Ljava/util/LinkedList;

    move-result-object v1

    .line 435
    .local v1, holderBindings:Ljava/util/LinkedList;,"Ljava/util/LinkedList<Lcom/nemustech/tiffany/world/TFHolder;>;"
    iput-object v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mCurrentActingHolder:Lcom/nemustech/tiffany/world/TFHolder;

    .line 436
    invoke-virtual {v1}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v2

    .local v2, i$:Ljava/util/Iterator;
    :goto_0
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v4

    if-eqz v4, :cond_0

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/nemustech/tiffany/world/TFHolder;

    .line 437
    .local v3, m:Lcom/nemustech/tiffany/world/TFHolder;
    invoke-virtual {v3, v0}, Lcom/nemustech/tiffany/world/TFHolder;->setCurrentActingHolder(Lcom/nemustech/tiffany/world/TFHolder;)V

    .line 438
    invoke-virtual {v3}, Lcom/nemustech/tiffany/world/TFHolder;->getMoveAnimation()Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;

    move-result-object v4

    const/4 v5, 0x0

    invoke-virtual {v4, v5}, Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;->setTempAutoRepositionMode(Z)V

    .line 439
    invoke-virtual {v3}, Lcom/nemustech/tiffany/world/TFHolder;->getMoveAnimation()Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;

    move-result-object v4

    invoke-virtual {v4}, Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;->stop()V

    goto :goto_0

    .line 441
    .end local v3           #m:Lcom/nemustech/tiffany/world/TFHolder;
    :cond_0
    return-void
.end method

.method protected onRemoveHolder(Lcom/nemustech/tiffany/world/TFObject;I)V
    .locals 0
    .parameter "object"
    .parameter "modelIndex"

    .prologue
    .line 1553
    invoke-virtual {p0, p1, p2}, Lcom/nemustech/tiffany/world/TFHolder;->onRemoveModel(Lcom/nemustech/tiffany/world/TFObject;I)V

    .line 1554
    return-void
.end method

.method protected onRemoveModel(Lcom/nemustech/tiffany/world/TFObject;I)V
    .locals 0
    .parameter "object"
    .parameter "modelIndex"

    .prologue
    .line 1574
    return-void
.end method

.method protected onSetDrawOrder(Landroid/util/SparseIntArray;I)V
    .locals 0
    .parameter "drawOrder"
    .parameter "modelIndex"

    .prologue
    .line 1511
    return-void
.end method

.method protected onTouchDown(Lcom/nemustech/tiffany/world/TFModel;FF)V
    .locals 0
    .parameter "selectedModel"
    .parameter "x"
    .parameter "y"

    .prologue
    .line 499
    return-void
.end method

.method protected onTouchDrag(Lcom/nemustech/tiffany/world/TFModel;FFFFI)V
    .locals 19
    .parameter "selectedModel"
    .parameter "start_x"
    .parameter "start_y"
    .parameter "end_x"
    .parameter "end_y"
    .parameter "tickPassed"

    .prologue
    .line 506
    const/4 v14, 0x0

    .line 507
    .local v14, _p1_holder:I
    const/16 v16, 0x4

    .line 508
    .local v16, _p2_holder:I
    const/16 v15, 0x8

    .line 509
    .local v15, _p1_world:I
    const/16 v17, 0xc

    .line 510
    .local v17, _p2_world:I
    const/16 v13, 0x10

    .line 511
    .local v13, _invert:I
    const/16 v5, 0x20

    new-array v4, v5, [F

    .line 512
    .local v4, p:[F
    const/16 v5, 0x8

    new-array v6, v5, [F

    .line 515
    .local v6, hitLine:[F
    move-object/from16 v0, p0

    iget-object v0, v0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    move-object v5, v0

    iget-object v5, v5, Lcom/nemustech/tiffany/world/TFWorld;->mRenderer:Lcom/nemustech/tiffany/world/TFRenderer;

    move-object v0, v5

    move/from16 v1, p2

    move/from16 v2, p3

    move-object v3, v6

    invoke-virtual {v0, v1, v2, v3}, Lcom/nemustech/tiffany/world/TFRenderer;->getHitTestLine(FF[F)V

    .line 516
    const/16 v5, 0x8

    const/4 v7, 0x0

    const/4 v9, 0x4

    move-object/from16 v0, p0

    iget v0, v0, Lcom/nemustech/tiffany/world/TFHolder;->mTOfHitPoint:F

    move v10, v0

    move-object v8, v6

    invoke-static/range {v4 .. v10}, Lcom/nemustech/tiffany/world/TFVector3D;->getPointOnLine([FI[FI[FIF)V

    .line 518
    move-object/from16 v0, p0

    iget-object v0, v0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    move-object v5, v0

    iget-object v5, v5, Lcom/nemustech/tiffany/world/TFWorld;->mRenderer:Lcom/nemustech/tiffany/world/TFRenderer;

    move-object v0, v5

    move/from16 v1, p4

    move/from16 v2, p5

    move-object v3, v6

    invoke-virtual {v0, v1, v2, v3}, Lcom/nemustech/tiffany/world/TFRenderer;->getHitTestLine(FF[F)V

    .line 519
    const/16 v5, 0xc

    const/4 v7, 0x0

    const/4 v9, 0x4

    move-object/from16 v0, p0

    iget v0, v0, Lcom/nemustech/tiffany/world/TFHolder;->mTOfHitPoint:F

    move v10, v0

    move-object v8, v6

    invoke-static/range {v4 .. v10}, Lcom/nemustech/tiffany/world/TFVector3D;->getPointOnLine([FI[FI[FIF)V

    .line 523
    const/16 v5, 0x10

    move-object/from16 v0, p0

    iget-object v0, v0, Lcom/nemustech/tiffany/world/TFHolder;->mMatrix:[F

    move-object v6, v0

    .end local v6           #hitLine:[F
    const/4 v7, 0x0

    invoke-static {v4, v5, v6, v7}, Landroid/opengl/Matrix;->invertM([FI[FI)Z

    .line 524
    const/16 v5, 0x8

    invoke-static {v4, v5}, Lcom/nemustech/tiffany/world/TFVector3D;->setW([FI)V

    .line 525
    const/4 v8, 0x0

    const/16 v10, 0x10

    const/16 v12, 0x8

    move-object v7, v4

    move-object v9, v4

    move-object v11, v4

    invoke-static/range {v7 .. v12}, Landroid/opengl/Matrix;->multiplyMV([FI[FI[FI)V

    .line 526
    const/16 v5, 0xc

    invoke-static {v4, v5}, Lcom/nemustech/tiffany/world/TFVector3D;->setW([FI)V

    .line 527
    const/4 v8, 0x4

    const/16 v10, 0x10

    const/16 v12, 0xc

    move-object v7, v4

    move-object v9, v4

    move-object v11, v4

    invoke-static/range {v7 .. v12}, Landroid/opengl/Matrix;->multiplyMV([FI[FI[FI)V

    .line 531
    const/16 v18, 0x0

    .local v18, i:I
    :goto_0
    const/16 v5, 0x8

    move/from16 v0, v18

    move v1, v5

    if-ge v0, v1, :cond_1

    .line 532
    aget v5, v4, v18

    invoke-static {v5}, Ljava/lang/Float;->isNaN(F)Z

    move-result v5

    if-eqz v5, :cond_0

    .line 533
    const-string v5, "TFHolder"

    const-string v6, "(%f,%f,%f,%f)->(%f,%f,%f,%f), %d"

    const/16 v7, 0x9

    new-array v7, v7, [Ljava/lang/Object;

    const/4 v8, 0x0

    const/4 v9, 0x0

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/4 v8, 0x1

    const/4 v9, 0x1

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/4 v8, 0x2

    const/4 v9, 0x2

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/4 v8, 0x3

    const/4 v9, 0x3

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/4 v8, 0x4

    const/4 v9, 0x4

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/4 v8, 0x5

    const/4 v9, 0x5

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/4 v8, 0x6

    const/4 v9, 0x6

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/4 v8, 0x7

    const/4 v9, 0x7

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/16 v8, 0x8

    invoke-static/range {p6 .. p6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v9

    aput-object v9, v7, v8

    invoke-static {v6, v7}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v6

    invoke-static {v5, v6}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 534
    const-string v5, "TFHolder"

    const-string v6, "(%f,%f,%f,%f)->(%f,%f,%f,%f), %d"

    const/16 v7, 0x9

    new-array v7, v7, [Ljava/lang/Object;

    const/4 v8, 0x0

    const/16 v9, 0x8

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/4 v8, 0x1

    const/16 v9, 0x9

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/4 v8, 0x2

    const/16 v9, 0xa

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/4 v8, 0x3

    const/16 v9, 0xb

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/4 v8, 0x4

    const/16 v9, 0xc

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/4 v8, 0x5

    const/16 v9, 0xd

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/4 v8, 0x6

    const/16 v9, 0xe

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/4 v8, 0x7

    const/16 v9, 0xf

    aget v9, v4, v9

    invoke-static {v9}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;

    move-result-object v9

    aput-object v9, v7, v8

    const/16 v8, 0x8

    invoke-static/range {p6 .. p6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v9

    aput-object v9, v7, v8

    invoke-static {v6, v7}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v6

    invoke-static {v5, v6}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 535
    const-string v5, "TFHolder"

    const-string v6, "TOUCH CANCELLED"

    invoke-static {v5, v6}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 543
    :goto_1
    return-void

    .line 531
    :cond_0
    add-int/lit8 v18, v18, 0x1

    goto/16 :goto_0

    .line 542
    :cond_1
    move-object/from16 v0, p0

    move-object/from16 v1, p1

    move-object v2, v4

    move/from16 v3, p6

    invoke-virtual {v0, v1, v2, v3}, Lcom/nemustech/tiffany/world/TFHolder;->applyTouchEvent(Lcom/nemustech/tiffany/world/TFObject;[FI)V

    goto :goto_1
.end method

.method protected onTouchUp(Lcom/nemustech/tiffany/world/TFModel;FF)V
    .locals 0
    .parameter "selectedModel"
    .parameter "x"
    .parameter "y"

    .prologue
    .line 503
    return-void
.end method

.method public printHolderState()V
    .locals 1

    .prologue
    .line 1648
    const/4 v0, 0x0

    invoke-virtual {p0, v0}, Lcom/nemustech/tiffany/world/TFHolder;->printHolderState(I)V

    .line 1649
    return-void
.end method

.method public printHolderState(I)V
    .locals 1
    .parameter "level"

    .prologue
    .line 1700
    const/4 v0, 0x0

    invoke-virtual {p0, p1, v0}, Lcom/nemustech/tiffany/world/TFHolder;->printHolderState(IZ)V

    .line 1701
    return-void
.end method

.method public printHolderState(IZ)V
    .locals 11
    .parameter "level"
    .parameter "absolute"

    .prologue
    .line 1652
    const-class v7, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v7

    .line 1653
    const/4 v3, 0x0

    .line 1654
    .local v3, location:[F
    if-eqz p2, :cond_0

    .line 1655
    const/4 v8, 0x3

    :try_start_0
    new-array v3, v8, [F

    .line 1656
    invoke-virtual {p0, v3}, Lcom/nemustech/tiffany/world/TFHolder;->getAbsLocation([F)V

    .line 1659
    :cond_0
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getItemCount()I

    move-result v2

    .line 1660
    .local v2, itemCount:I
    new-instance v5, Ljava/lang/StringBuilder;

    invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V

    .line 1661
    .local v5, sb:Ljava/lang/StringBuilder;
    const-string v6, ""

    .line 1662
    .local v6, space:Ljava/lang/String;
    if-nez p1, :cond_1

    .line 1663
    const-string v8, "+"

    invoke-virtual {v6, v8}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v6

    .line 1666
    :goto_0
    const/4 v0, 0x0

    .local v0, i:I
    :goto_1
    if-ge v0, p1, :cond_2

    .line 1667
    const-string v8, " "

    invoke-virtual {v6, v8}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v6

    .line 1666
    add-int/lit8 v0, v0, 0x1

    goto :goto_1

    .line 1665
    .end local v0           #i:I
    :cond_1
    const-string v8, "|"

    invoke-virtual {v6, v8}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v6

    goto :goto_0

    .line 1669
    .restart local v0       #i:I
    :cond_2
    new-instance v8, Ljava/lang/StringBuilder;

    invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v8, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "+"

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "Holder -"

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    invoke-virtual {v8, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "\tDescription: "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    iget-object v9, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDescription:Ljava/lang/String;

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "\tItemIndex: "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    iget v9, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemIndex:I

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "\n"

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v8

    invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 1670
    const-string v8, " "

    invoke-virtual {v6, v8}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v6

    .line 1671
    new-instance v8, Ljava/lang/StringBuilder;

    invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v8, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "        Item Count: "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    invoke-virtual {v8, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "\t"

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "Slot Count: "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    iget-object v9, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v9}, Ljava/util/LinkedList;->size()I

    move-result v9

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "\n"

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v8

    invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 1672
    new-instance v8, Ljava/lang/StringBuilder;

    invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v8, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "        should draw: "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    iget-boolean v9, p0, Lcom/nemustech/tiffany/world/TFHolder;->mShouldDraw:Z

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "\tvisibility: "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    iget-boolean v9, p0, Lcom/nemustech/tiffany/world/TFHolder;->mVisible:Z

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "\topacity: "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    iget v9, p0, Lcom/nemustech/tiffany/world/TFHolder;->mOpacity:F

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "\n"

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v8

    invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 1673
    if-eqz p2, :cond_4

    .line 1674
    new-instance v8, Ljava/lang/StringBuilder;

    invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v8, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "        location: "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    const/4 v9, 0x0

    aget v9, v3, v9

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, ", "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    const/4 v9, 0x1

    aget v9, v3, v9

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, ", "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    const/4 v9, 0x2

    aget v9, v3, v9

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "\n"

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v8

    invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 1677
    :goto_2
    new-instance v8, Ljava/lang/StringBuilder;

    invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v8, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "        parentHolder: "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    iget-object v9, p0, Lcom/nemustech/tiffany/world/TFHolder;->mParentHolder:Lcom/nemustech/tiffany/world/TFHolder;

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "\n"

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v8

    invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 1678
    iget-object v8, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    if-eqz v8, :cond_5

    .line 1679
    new-instance v8, Ljava/lang/StringBuilder;

    invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v8, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "        ItemProvider: "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    iget-object v9, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, " itemProvider\'s client: "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    iget-object v9, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    invoke-virtual {v9}, Lcom/nemustech/tiffany/world/TFItemProvider;->getClientHolder()Lcom/nemustech/tiffany/world/TFHolder;

    move-result-object v9

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v8

    invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v8

    invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 1682
    :goto_3
    const-string v8, "HOLDER_STAT"

    invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v9

    invoke-static {v8, v9}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 1683
    iget-boolean v8, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    if-nez v8, :cond_8

    .line 1684
    add-int/lit8 p1, p1, 0x1

    .line 1685
    iget-object v8, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v8}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    .end local p0
    .local v1, i$:Ljava/util/Iterator;
    :cond_3
    :goto_4
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v8

    if-eqz v8, :cond_6

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Lcom/nemustech/tiffany/world/TFObjectContainer;

    .line 1686
    .local v4, oc:Lcom/nemustech/tiffany/world/TFObjectContainer;
    invoke-virtual {v4}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v8

    if-eqz v8, :cond_3

    .line 1687
    invoke-virtual {v4}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object p0

    check-cast p0, Lcom/nemustech/tiffany/world/TFHolder;

    invoke-virtual {p0, p1}, Lcom/nemustech/tiffany/world/TFHolder;->printHolderState(I)V

    goto :goto_4

    .line 1696
    .end local v0           #i:I
    .end local v1           #i$:Ljava/util/Iterator;
    .end local v2           #itemCount:I
    .end local v4           #oc:Lcom/nemustech/tiffany/world/TFObjectContainer;
    .end local v5           #sb:Ljava/lang/StringBuilder;
    .end local v6           #space:Ljava/lang/String;
    :catchall_0
    move-exception v8

    monitor-exit v7
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v8

    .line 1676
    .restart local v0       #i:I
    .restart local v2       #itemCount:I
    .restart local v5       #sb:Ljava/lang/StringBuilder;
    .restart local v6       #space:Ljava/lang/String;
    .restart local p0
    :cond_4
    :try_start_1
    new-instance v8, Ljava/lang/StringBuilder;

    invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v8, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "        location: "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    iget-object v9, p0, Lcom/nemustech/tiffany/world/TFHolder;->mLocation:[F

    const/4 v10, 0x0

    aget v9, v9, v10

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, ", "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    iget-object v9, p0, Lcom/nemustech/tiffany/world/TFHolder;->mLocation:[F

    const/4 v10, 0x1

    aget v9, v9, v10

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, ", "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    iget-object v9, p0, Lcom/nemustech/tiffany/world/TFHolder;->mLocation:[F

    const/4 v10, 0x2

    aget v9, v9, v10

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "\n"

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v8

    invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    goto/16 :goto_2

    .line 1681
    :cond_5
    new-instance v8, Ljava/lang/StringBuilder;

    invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v8, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    const-string v9, "        ItemProvider: "

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v8

    iget-object v9, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v8

    invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v8

    invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    goto/16 :goto_3

    .line 1689
    .end local p0
    .restart local v1       #i$:Ljava/util/Iterator;
    :cond_6
    add-int/lit8 p1, p1, -0x1

    .line 1696
    :cond_7
    monitor-exit v7

    .line 1697
    return-void

    .line 1692
    .end local v1           #i$:Ljava/util/Iterator;
    .restart local p0
    :cond_8
    iget-object v8, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v8}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    .end local p0
    .restart local v1       #i$:Ljava/util/Iterator;
    :goto_5
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v8

    if-eqz v8, :cond_7

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Lcom/nemustech/tiffany/world/TFObjectContainer;

    .line 1693
    .restart local v4       #oc:Lcom/nemustech/tiffany/world/TFObjectContainer;
    invoke-virtual {v4}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object p0

    check-cast p0, Lcom/nemustech/tiffany/world/TFModel;

    invoke-virtual {p0, p1}, Lcom/nemustech/tiffany/world/TFModel;->printModelState(I)V
    :try_end_1
    .catchall {:try_start_1 .. :try_end_1} :catchall_0

    goto :goto_5
.end method

.method public refreshHolder()V
    .locals 2

    .prologue
    .line 1126
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1127
    const/4 v1, 0x1

    :try_start_0
    iput-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mRefresh:Z

    .line 1128
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->refreshSlotIndex()V

    .line 1129
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    if-eqz v1, :cond_0

    .line 1130
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    invoke-static {}, Lcom/nemustech/tiffany/world/TFWorld;->requestRender()V

    .line 1131
    :cond_0
    monitor-exit v0

    .line 1132
    return-void

    .line 1131
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method protected refreshSlotIndex()V
    .locals 4

    .prologue
    .line 1203
    const/4 v2, 0x0

    .line 1204
    .local v2, slotIndex:I
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v3}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v0

    .local v0, i$:Ljava/util/Iterator;
    :goto_0
    invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z

    move-result v3

    if-eqz v3, :cond_0

    invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/nemustech/tiffany/world/TFObjectContainer;

    .line 1205
    .local v1, slot:Lcom/nemustech/tiffany/world/TFObjectContainer;
    invoke-virtual {p0, v2}, Lcom/nemustech/tiffany/world/TFHolder;->calculateItemIndexOfSlot(I)I

    move-result v3

    invoke-virtual {p0, v1, v3}, Lcom/nemustech/tiffany/world/TFHolder;->setItemIndexOfObjectInSlot(Lcom/nemustech/tiffany/world/TFObjectContainer;I)V

    .line 1206
    add-int/lit8 v2, v2, 0x1

    goto :goto_0

    .line 1208
    .end local v1           #slot:Lcom/nemustech/tiffany/world/TFObjectContainer;
    :cond_0
    return-void
.end method

.method removeHolder(I)Lcom/nemustech/tiffany/world/TFHolder;
    .locals 1
    .parameter "index"

    .prologue
    .line 758
    const/4 v0, 0x0

    invoke-virtual {p0, p1, v0}, Lcom/nemustech/tiffany/world/TFHolder;->removeHolder(IZ)Lcom/nemustech/tiffany/world/TFHolder;

    move-result-object v0

    return-object v0
.end method

.method abstract removeHolder(IZ)Lcom/nemustech/tiffany/world/TFHolder;
.end method

.method removeModel(I)Lcom/nemustech/tiffany/world/TFModel;
    .locals 1
    .parameter "index"

    .prologue
    .line 770
    const/4 v0, 0x0

    invoke-virtual {p0, p1, v0}, Lcom/nemustech/tiffany/world/TFHolder;->removeModel(IZ)Lcom/nemustech/tiffany/world/TFModel;

    move-result-object v0

    return-object v0
.end method

.method abstract removeModel(IZ)Lcom/nemustech/tiffany/world/TFModel;
.end method

.method public removeSlots(I)V
    .locals 2
    .parameter "numSlots"

    .prologue
    .line 745
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 746
    :try_start_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v1}, Ljava/util/LinkedList;->size()I

    move-result v1

    if-lt v1, p1, :cond_0

    .line 747
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v1}, Ljava/util/LinkedList;->removeLast()Ljava/lang/Object;

    .line 748
    :cond_0
    monitor-exit v0

    .line 749
    return-void

    .line 748
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public requestLayout()V
    .locals 2

    .prologue
    .line 1334
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1335
    const/4 v1, 0x1

    :try_start_0
    iput-boolean v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mLayoutObjects:Z

    .line 1336
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    if-eqz v1, :cond_0

    .line 1337
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    invoke-static {}, Lcom/nemustech/tiffany/world/TFWorld;->requestRender()V

    .line 1338
    :cond_0
    monitor-exit v0

    .line 1339
    return-void

    .line 1338
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public searchForChildObject(Lcom/nemustech/tiffany/world/TFObject;)Lcom/nemustech/tiffany/world/TFHolder;
    .locals 5
    .parameter "object"

    .prologue
    .line 1240
    const-class v3, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v3

    .line 1241
    const/4 v2, 0x0

    .line 1242
    .local v2, toReturn:Lcom/nemustech/tiffany/world/TFHolder;
    :try_start_0
    iget-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v4}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v0

    .end local p0
    .local v0, i$:Ljava/util/Iterator;
    :cond_0
    invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z

    move-result v4

    if-eqz v4, :cond_1

    invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/nemustech/tiffany/world/TFObjectContainer;

    .line 1243
    .local v1, m:Lcom/nemustech/tiffany/world/TFObjectContainer;
    invoke-virtual {v1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v4

    if-eqz v4, :cond_0

    .line 1244
    invoke-virtual {v1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v4

    instance-of v4, v4, Lcom/nemustech/tiffany/world/TFModel;

    if-eqz v4, :cond_2

    .line 1245
    invoke-virtual {v1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v4

    if-ne v4, p1, :cond_0

    .line 1246
    invoke-virtual {v1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v4

    invoke-virtual {v4}, Lcom/nemustech/tiffany/world/TFObject;->getParentHolder()Lcom/nemustech/tiffany/world/TFHolder;

    move-result-object v2

    .line 1257
    .end local v1           #m:Lcom/nemustech/tiffany/world/TFObjectContainer;
    :cond_1
    :goto_0
    monitor-exit v3

    return-object v2

    .line 1251
    .restart local v1       #m:Lcom/nemustech/tiffany/world/TFObjectContainer;
    :cond_2
    invoke-virtual {v1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object p0

    check-cast p0, Lcom/nemustech/tiffany/world/TFHolder;

    invoke-virtual {p0, p1}, Lcom/nemustech/tiffany/world/TFHolder;->searchForChildObject(Lcom/nemustech/tiffany/world/TFObject;)Lcom/nemustech/tiffany/world/TFHolder;

    move-result-object v2

    .line 1252
    if-eqz v2, :cond_0

    goto :goto_0

    .line 1258
    .end local v0           #i$:Ljava/util/Iterator;
    .end local v1           #m:Lcom/nemustech/tiffany/world/TFObjectContainer;
    :catchall_0
    move-exception v4

    monitor-exit v3
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v4
.end method

.method public setBindingBehaviorDispatcher(Lcom/nemustech/tiffany/world/TFHolder$BindingBehaviorDispatcher;)V
    .locals 2
    .parameter "dispatcher"

    .prologue
    .line 407
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 408
    :try_start_0
    iput-object p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mBindingBehaviorDispatcher:Lcom/nemustech/tiffany/world/TFHolder$BindingBehaviorDispatcher;

    .line 409
    monitor-exit v0

    .line 410
    return-void

    .line 409
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method protected setCurrentActingHolder(Lcom/nemustech/tiffany/world/TFHolder;)V
    .locals 0
    .parameter "activeHolder"

    .prologue
    .line 428
    iput-object p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mCurrentActingHolder:Lcom/nemustech/tiffany/world/TFHolder;

    .line 429
    return-void
.end method

.method public setDeceleration(F)V
    .locals 2
    .parameter "deceleration"

    .prologue
    .line 1621
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1622
    :try_start_0
    iput p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDeceleration:F

    .line 1623
    monitor-exit v0

    .line 1624
    return-void

    .line 1623
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public setDeviation(F)Z
    .locals 2
    .parameter "deviation"

    .prologue
    .line 1267
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1268
    const/high16 v1, 0x3f00

    cmpl-float v1, p1, v1

    if-gtz v1, :cond_0

    const/high16 v1, -0x4100

    cmpg-float v1, p1, v1

    if-gez v1, :cond_1

    .line 1269
    :cond_0
    const/4 v1, 0x0

    :try_start_0
    monitor-exit v0

    move v0, v1

    .line 1271
    :goto_0
    return v0

    .line 1270
    :cond_1
    iput p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDeviation:F

    .line 1271
    const/4 v1, 0x1

    monitor-exit v0

    move v0, v1

    goto :goto_0

    .line 1272
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method setDrawOrder(I)V
    .locals 7
    .parameter "modelIndex"

    .prologue
    const/4 v6, 0x1

    .line 1514
    iget-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    if-nez v4, :cond_0

    .line 1515
    new-instance v4, Landroid/util/SparseIntArray;

    invoke-direct {v4}, Landroid/util/SparseIntArray;-><init>()V

    iput-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    .line 1517
    :cond_0
    iget-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    invoke-virtual {v4}, Landroid/util/SparseIntArray;->size()I

    move-result v3

    .line 1519
    .local v3, size:I
    if-ge p1, v3, :cond_2

    .line 1520
    iget-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    sub-int v5, v3, v6

    invoke-virtual {v4, v5}, Landroid/util/SparseIntArray;->get(I)I

    move-result v2

    .line 1521
    .local v2, removedOrder:I
    iget-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    sub-int v5, v3, v6

    invoke-virtual {v4, v5}, Landroid/util/SparseIntArray;->removeAt(I)V

    .line 1522
    iget-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    invoke-virtual {v4}, Landroid/util/SparseIntArray;->size()I

    move-result v1

    .line 1523
    .local v1, newSize:I
    const/4 v0, 0x0

    .local v0, i:I
    :goto_0
    if-ge v0, v1, :cond_3

    .line 1524
    iget-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    invoke-virtual {v4, v0}, Landroid/util/SparseIntArray;->get(I)I

    move-result v4

    if-le v4, v2, :cond_1

    .line 1525
    iget-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    iget-object v5, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    invoke-virtual {v5, v0}, Landroid/util/SparseIntArray;->get(I)I

    move-result v5

    sub-int/2addr v5, v6

    invoke-virtual {v4, v0, v5}, Landroid/util/SparseIntArray;->put(II)V

    .line 1523
    :cond_1
    add-int/lit8 v0, v0, 0x1

    goto :goto_0

    .line 1528
    .end local v0           #i:I
    .end local v1           #newSize:I
    .end local v2           #removedOrder:I
    :cond_2
    if-ne p1, v3, :cond_4

    .line 1529
    iget-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    invoke-virtual {v4, p1, p1}, Landroid/util/SparseIntArray;->append(II)V

    .line 1534
    :cond_3
    iget-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    invoke-virtual {p0, v4, p1}, Lcom/nemustech/tiffany/world/TFHolder;->onSetDrawOrder(Landroid/util/SparseIntArray;I)V

    .line 1539
    iget-object v4, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v4}, Ljava/util/LinkedList;->size()I

    move-result v4

    iget-object v5, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDrawOrder:Landroid/util/SparseIntArray;

    invoke-virtual {v5}, Landroid/util/SparseIntArray;->size()I

    move-result v5

    if-eq v4, v5, :cond_5

    .line 1540
    new-instance v4, Ljava/lang/IllegalStateException;

    const-string v5, "DrawingCount does not match with ObjectSlot count."

    invoke-direct {v4, v5}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v4

    .line 1531
    :cond_4
    new-instance v4, Ljava/lang/IllegalArgumentException;

    const-string v5, "Invalid model Index onSetDrawOrder"

    invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v4

    .line 1541
    :cond_5
    return-void
.end method

.method public setEndlessMode(Z)V
    .locals 2
    .parameter "endless"

    .prologue
    .line 228
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 229
    :try_start_0
    iput-boolean p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWraparound:Z

    .line 230
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->refreshHolder()V

    .line 231
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->requestLayout()V

    .line 232
    monitor-exit v0

    .line 233
    return-void

    .line 232
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public abstract setHeadItemIndex(IZ)V
.end method

.method protected setHeadSlotIndex(I)V
    .locals 3
    .parameter "index"

    .prologue
    const/4 v1, -0x1

    .line 1051
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getSlotCount()I

    move-result v0

    if-lez v0, :cond_1

    .line 1052
    if-ltz p1, :cond_0

    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getSlotCount()I

    move-result v0

    if-ge p1, v0, :cond_0

    .line 1053
    iput p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadSlotIndex:I

    .line 1054
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->getHeadItemIndex()I

    move-result v0

    iput v0, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadItemIndex:I

    .line 1071
    :goto_0
    return-void

    .line 1057
    :cond_0
    iput v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadSlotIndex:I

    .line 1058
    iput v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadItemIndex:I

    .line 1059
    new-instance v0, Ljava/lang/IllegalArgumentException;

    const-string v1, "New head slot index value is out of bounds"

    invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 1063
    :cond_1
    if-ne p1, v1, :cond_2

    .line 1064
    iput v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadSlotIndex:I

    .line 1065
    iput v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadItemIndex:I

    goto :goto_0

    .line 1068
    :cond_2
    new-instance v0, Ljava/lang/IllegalArgumentException;

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "New head slot index value must be -1 when there are no slots in holder - index is: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v0
.end method

.method public setHolder(Lcom/nemustech/tiffany/world/TFHolder;I)Z
    .locals 6
    .parameter "holder"
    .parameter "slotIndex"

    .prologue
    const/4 v5, 0x0

    .line 818
    const-class v4, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v4

    .line 819
    :try_start_0
    iget-boolean v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    if-eqz v3, :cond_0

    .line 820
    monitor-exit v4

    move v3, v5

    .line 840
    .end local p0
    :goto_0
    return v3

    .line 821
    .restart local p0
    :cond_0
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v3}, Ljava/util/LinkedList;->size()I

    move-result v3

    if-lt p2, v3, :cond_1

    .line 822
    monitor-exit v4

    move v3, v5

    goto :goto_0

    .line 824
    :cond_1
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v3, p2}, Ljava/util/LinkedList;->get(I)Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/nemustech/tiffany/world/TFObjectContainer;

    invoke-virtual {v3, p1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->setObject(Lcom/nemustech/tiffany/world/TFObject;)V

    .line 830
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mCloneList:Ljava/util/LinkedList;

    if-eqz v3, :cond_2

    .line 831
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mCloneList:Ljava/util/LinkedList;

    invoke-virtual {v3}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    .end local p0
    .local v1, i$:Ljava/util/Iterator;
    :goto_1
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v3

    if-eqz v3, :cond_2

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lcom/nemustech/tiffany/world/TFObject;
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    .line 833
    .local v2, o:Lcom/nemustech/tiffany/world/TFObject;
    :try_start_1
    check-cast v2, Lcom/nemustech/tiffany/world/TFHolder;

    .end local v2           #o:Lcom/nemustech/tiffany/world/TFObject;
    invoke-virtual {p1}, Lcom/nemustech/tiffany/world/TFHolder;->clone()Ljava/lang/Object;

    move-result-object p0

    check-cast p0, Lcom/nemustech/tiffany/world/TFHolder;

    invoke-virtual {v2, p0, p2}, Lcom/nemustech/tiffany/world/TFHolder;->setHolder(Lcom/nemustech/tiffany/world/TFHolder;I)Z
    :try_end_1
    .catchall {:try_start_1 .. :try_end_1} :catchall_0
    .catch Ljava/lang/CloneNotSupportedException; {:try_start_1 .. :try_end_1} :catch_0

    goto :goto_1

    .line 834
    :catch_0
    move-exception v3

    move-object v0, v3

    .line 836
    .local v0, e:Ljava/lang/CloneNotSupportedException;
    :try_start_2
    invoke-virtual {v0}, Ljava/lang/CloneNotSupportedException;->printStackTrace()V

    goto :goto_1

    .line 841
    .end local v0           #e:Ljava/lang/CloneNotSupportedException;
    .end local v1           #i$:Ljava/util/Iterator;
    :catchall_0
    move-exception v3

    monitor-exit v4
    :try_end_2
    .catchall {:try_start_2 .. :try_end_2} :catchall_0

    throw v3

    .line 840
    :cond_2
    const/4 v3, 0x1

    :try_start_3
    monitor-exit v4
    :try_end_3
    .catchall {:try_start_3 .. :try_end_3} :catchall_0

    goto :goto_0
.end method

.method public setImageProvider(Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;)V
    .locals 2
    .parameter "iProvider"

    .prologue
    .line 324
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 325
    :try_start_0
    iput-object p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mImageProvider:Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;

    .line 326
    monitor-exit v0

    .line 327
    return-void

    .line 326
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method protected setItemIndexOfObjectInSlot(Lcom/nemustech/tiffany/world/TFObjectContainer;I)V
    .locals 11
    .parameter "referenceWrapper"
    .parameter "itemIndex"

    .prologue
    const/4 v10, -0x1

    const/4 v9, 0x0

    const/4 v8, 0x1

    .line 1135
    invoke-virtual {p1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v2

    .line 1137
    .local v2, object:Lcom/nemustech/tiffany/world/TFObject;
    if-eqz v2, :cond_1

    .line 1138
    invoke-virtual {v2}, Lcom/nemustech/tiffany/world/TFObject;->getItemIndex()I

    move-result v4

    .line 1146
    .local v4, oldItemIndex:I
    :goto_0
    if-gez p2, :cond_2

    .line 1147
    invoke-virtual {v2, v10}, Lcom/nemustech/tiffany/world/TFObject;->setItemIndex(I)V

    .line 1148
    iput-boolean v9, v2, Lcom/nemustech/tiffany/world/TFObject;->mShouldDraw:Z

    .line 1200
    :cond_0
    :goto_1
    return-void

    .line 1141
    .end local v4           #oldItemIndex:I
    :cond_1
    iget-object v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDummy:Lcom/nemustech/tiffany/world/TFObject;

    invoke-virtual {p1, v7}, Lcom/nemustech/tiffany/world/TFObjectContainer;->setObject(Lcom/nemustech/tiffany/world/TFObject;)V

    .line 1142
    invoke-virtual {p1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v2

    .line 1143
    const/4 v4, -0x1

    .restart local v4       #oldItemIndex:I
    goto :goto_0

    .line 1152
    :cond_2
    iget-boolean v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDelayedSetItemMode:Z

    if-eqz v7, :cond_7

    if-eq v4, p2, :cond_3

    iget-boolean v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mNeedToSetItem:Z

    if-eqz v7, :cond_3

    iget-boolean v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mSetItemNow:Z

    if-nez v7, :cond_4

    :cond_3
    iget-boolean v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mRefresh:Z

    if-eqz v7, :cond_6

    :cond_4
    move v5, v8

    .line 1155
    .local v5, setFlag:Z
    :goto_2
    if-eqz v5, :cond_0

    .line 1156
    iget-boolean v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    if-eqz v7, :cond_b

    .line 1157
    iget-object v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mImageProvider:Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;

    if-eqz v7, :cond_a

    .line 1158
    move-object v0, v2

    check-cast v0, Lcom/nemustech/tiffany/world/TFModel;

    move-object v1, v0

    .line 1159
    .local v1, model:Lcom/nemustech/tiffany/world/TFModel;
    iget-object v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mImageProvider:Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;

    invoke-interface {v7, v1, p2}, Lcom/nemustech/tiffany/world/TFHolder$ImageProvider;->setImage(Lcom/nemustech/tiffany/world/TFModel;I)V

    .line 1165
    .end local v1           #model:Lcom/nemustech/tiffany/world/TFModel;
    :cond_5
    :goto_3
    iput-boolean v8, v2, Lcom/nemustech/tiffany/world/TFObject;->mShouldDraw:Z

    .line 1166
    invoke-virtual {v2, p2}, Lcom/nemustech/tiffany/world/TFObject;->setItemIndex(I)V

    .line 1189
    :goto_4
    iget-object v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mSetItemListener:Lcom/nemustech/tiffany/world/TFHolder$OnSetItemListener;

    if-eqz v7, :cond_0

    .line 1190
    move-object v3, p1

    .line 1191
    .local v3, oc:Lcom/nemustech/tiffany/world/TFObjectContainer;
    move v6, p2

    .line 1192
    .local v6, settedItemIndex:I
    iget-object v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mWorld:Lcom/nemustech/tiffany/world/TFWorld;

    new-instance v7, Lcom/nemustech/tiffany/world/TFHolder$1;

    invoke-direct {v7, p0, v3, v6}, Lcom/nemustech/tiffany/world/TFHolder$1;-><init>(Lcom/nemustech/tiffany/world/TFHolder;Lcom/nemustech/tiffany/world/TFObjectContainer;I)V

    invoke-static {v7}, Lcom/nemustech/tiffany/world/TFWorld;->queueEvent(Ljava/lang/Runnable;)V

    goto :goto_1

    .end local v3           #oc:Lcom/nemustech/tiffany/world/TFObjectContainer;
    .end local v5           #setFlag:Z
    .end local v6           #settedItemIndex:I
    :cond_6
    move v5, v9

    .line 1152
    goto :goto_2

    :cond_7
    if-ne v4, p2, :cond_8

    iget-boolean v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mRefresh:Z

    if-eqz v7, :cond_9

    :cond_8
    move v5, v8

    goto :goto_2

    :cond_9
    move v5, v9

    goto :goto_2

    .line 1161
    .restart local v5       #setFlag:Z
    :cond_a
    iget-object v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    if-eqz v7, :cond_5

    .line 1162
    iget-object v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    invoke-virtual {v7, p1, p2}, Lcom/nemustech/tiffany/world/TFItemProvider;->setItem(Lcom/nemustech/tiffany/world/TFObjectContainer;I)V

    .line 1163
    invoke-virtual {p1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v2

    goto :goto_3

    .line 1169
    :cond_b
    iget-object v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    if-nez v7, :cond_c

    .line 1170
    iput-boolean v8, v2, Lcom/nemustech/tiffany/world/TFObject;->mShouldDraw:Z

    .line 1171
    invoke-virtual {v2, p2}, Lcom/nemustech/tiffany/world/TFObject;->setItemIndex(I)V

    goto :goto_4

    .line 1174
    :cond_c
    invoke-virtual {p1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->clearObject()V

    .line 1175
    iget-object v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    invoke-virtual {v7, p1, p2}, Lcom/nemustech/tiffany/world/TFItemProvider;->setItem(Lcom/nemustech/tiffany/world/TFObjectContainer;I)V

    .line 1176
    invoke-virtual {p1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v2

    .line 1177
    if-nez v2, :cond_d

    .line 1178
    iget-object v7, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDummy:Lcom/nemustech/tiffany/world/TFObject;

    invoke-virtual {p1, v7}, Lcom/nemustech/tiffany/world/TFObjectContainer;->setObject(Lcom/nemustech/tiffany/world/TFObject;)V

    .line 1179
    invoke-virtual {p1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->getObject()Lcom/nemustech/tiffany/world/TFObject;

    move-result-object v2

    .line 1180
    iput-boolean v9, v2, Lcom/nemustech/tiffany/world/TFObject;->mShouldDraw:Z

    .line 1181
    invoke-virtual {v2, v10}, Lcom/nemustech/tiffany/world/TFObject;->setItemIndex(I)V

    goto :goto_4

    .line 1184
    :cond_d
    iput-boolean v8, v2, Lcom/nemustech/tiffany/world/TFObject;->mShouldDraw:Z

    .line 1185
    invoke-virtual {v2, p2}, Lcom/nemustech/tiffany/world/TFObject;->setItemIndex(I)V

    goto :goto_4
.end method

.method public setItemProvider(Lcom/nemustech/tiffany/world/TFItemProvider;)V
    .locals 3
    .parameter
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lcom/nemustech/tiffany/world/TFItemProvider",
            "<*>;)V"
        }
    .end annotation

    .prologue
    .line 330
    .local p1, iProvider:Lcom/nemustech/tiffany/world/TFItemProvider;,"Lcom/nemustech/tiffany/world/TFItemProvider<*>;"
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 331
    :try_start_0
    iput-object p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    .line 333
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    if-eqz v1, :cond_0

    .line 334
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    invoke-virtual {v1, p0}, Lcom/nemustech/tiffany/world/TFItemProvider;->setClientHolder(Lcom/nemustech/tiffany/world/TFHolder;)V

    .line 336
    :cond_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mItemProvider:Lcom/nemustech/tiffany/world/TFItemProvider;

    invoke-virtual {v1, p0}, Lcom/nemustech/tiffany/world/TFItemProvider;->associateTo(Lcom/nemustech/tiffany/world/TFHolder;)V

    .line 337
    iget v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHeadItemIndex:I

    if-gez v1, :cond_1

    .line 338
    const/4 v1, 0x0

    const/4 v2, 0x0

    invoke-virtual {p0, v1, v2}, Lcom/nemustech/tiffany/world/TFHolder;->setHeadItemIndex(IZ)V

    .line 339
    :cond_1
    invoke-virtual {p0}, Lcom/nemustech/tiffany/world/TFHolder;->refreshHolder()V

    .line 340
    monitor-exit v0

    .line 341
    return-void

    .line 340
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public setModel(Lcom/nemustech/tiffany/world/TFModel;I)Z
    .locals 6
    .parameter "model"
    .parameter "slotIndex"

    .prologue
    const/4 v5, 0x0

    .line 856
    const-class v4, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v4

    .line 857
    :try_start_0
    iget-boolean v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    if-nez v3, :cond_0

    .line 858
    monitor-exit v4

    move v3, v5

    .line 878
    .end local p0
    :goto_0
    return v3

    .line 859
    .restart local p0
    :cond_0
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v3}, Ljava/util/LinkedList;->size()I

    move-result v3

    if-le p2, v3, :cond_1

    .line 860
    monitor-exit v4

    move v3, v5

    goto :goto_0

    .line 862
    :cond_1
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectSlots:Ljava/util/LinkedList;

    invoke-virtual {v3, p2}, Ljava/util/LinkedList;->get(I)Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lcom/nemustech/tiffany/world/TFObjectContainer;

    invoke-virtual {v3, p1}, Lcom/nemustech/tiffany/world/TFObjectContainer;->setObject(Lcom/nemustech/tiffany/world/TFObject;)V

    .line 868
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mCloneList:Ljava/util/LinkedList;

    if-eqz v3, :cond_2

    .line 869
    iget-object v3, p0, Lcom/nemustech/tiffany/world/TFHolder;->mCloneList:Ljava/util/LinkedList;

    invoke-virtual {v3}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;

    move-result-object v1

    .end local p0
    .local v1, i$:Ljava/util/Iterator;
    :goto_1
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v3

    if-eqz v3, :cond_2

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Lcom/nemustech/tiffany/world/TFObject;
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    .line 871
    .local v2, o:Lcom/nemustech/tiffany/world/TFObject;
    :try_start_1
    check-cast v2, Lcom/nemustech/tiffany/world/TFHolder;

    .end local v2           #o:Lcom/nemustech/tiffany/world/TFObject;
    invoke-virtual {p1}, Lcom/nemustech/tiffany/world/TFModel;->clone()Ljava/lang/Object;

    move-result-object p0

    check-cast p0, Lcom/nemustech/tiffany/world/TFModel;

    invoke-virtual {v2, p0, p2}, Lcom/nemustech/tiffany/world/TFHolder;->setModel(Lcom/nemustech/tiffany/world/TFModel;I)Z
    :try_end_1
    .catchall {:try_start_1 .. :try_end_1} :catchall_0
    .catch Ljava/lang/CloneNotSupportedException; {:try_start_1 .. :try_end_1} :catch_0

    goto :goto_1

    .line 872
    :catch_0
    move-exception v3

    move-object v0, v3

    .line 874
    .local v0, e:Ljava/lang/CloneNotSupportedException;
    :try_start_2
    invoke-virtual {v0}, Ljava/lang/CloneNotSupportedException;->printStackTrace()V

    goto :goto_1

    .line 879
    .end local v0           #e:Ljava/lang/CloneNotSupportedException;
    .end local v1           #i$:Ljava/util/Iterator;
    :catchall_0
    move-exception v3

    monitor-exit v4
    :try_end_2
    .catchall {:try_start_2 .. :try_end_2} :catchall_0

    throw v3

    .line 878
    :cond_2
    const/4 v3, 0x1

    :try_start_3
    monitor-exit v4
    :try_end_3
    .catchall {:try_start_3 .. :try_end_3} :catchall_0

    goto :goto_0
.end method

.method public setMoveAnimation(Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;)V
    .locals 2
    .parameter "moveAnimation"

    .prologue
    .line 1996
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1997
    :try_start_0
    iput-object p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mMoveAni:Lcom/nemustech/tiffany/world/TFHolder$MoveAnimation;

    .line 1998
    monitor-exit v0

    .line 1999
    return-void

    .line 1998
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public setObjectShiftListener(Lcom/nemustech/tiffany/world/TFHolder$OnObjectShiftListener;)V
    .locals 2
    .parameter "modelChangeListener"

    .prologue
    .line 267
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 268
    :try_start_0
    iput-object p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mObjectShiftListener:Lcom/nemustech/tiffany/world/TFHolder$OnObjectShiftListener;

    .line 269
    monitor-exit v0

    .line 270
    return-void

    .line 269
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public setSensitivity(F)V
    .locals 2
    .parameter "sensitivityValue"

    .prologue
    .line 1710
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1711
    :try_start_0
    iput p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mSensitivity:F

    .line 1712
    monitor-exit v0

    .line 1713
    return-void

    .line 1712
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public setSetItemFinishListener(Lcom/nemustech/tiffany/world/TFHolder$OnSetItemListener;)V
    .locals 2
    .parameter "setItemFinishListener"

    .prologue
    .line 250
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 251
    :try_start_0
    iput-object p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mSetItemListener:Lcom/nemustech/tiffany/world/TFHolder$OnSetItemListener;

    .line 252
    monitor-exit v0

    .line 253
    return-void

    .line 252
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public setStepPerUnitForce(F)V
    .locals 2
    .parameter "stepPerUnitForce"

    .prologue
    .line 1716
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 1717
    :try_start_0
    iput p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mStepPerUnitForce:F

    .line 1718
    monitor-exit v0

    .line 1719
    return-void

    .line 1718
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public setTerminalHolder(Z)V
    .locals 3
    .parameter "terminalHolder"

    .prologue
    .line 695
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 696
    :try_start_0
    iput-boolean p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mTerminalHolder:Z

    .line 697
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDummy:Lcom/nemustech/tiffany/world/TFObject;

    if-nez v1, :cond_0

    .line 698
    new-instance v1, Lcom/nemustech/tiffany/world/TFPlaceHolder;

    invoke-direct {v1}, Lcom/nemustech/tiffany/world/TFPlaceHolder;-><init>()V

    iput-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDummy:Lcom/nemustech/tiffany/world/TFObject;

    .line 699
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mDummy:Lcom/nemustech/tiffany/world/TFObject;

    const-string v2, "dummy"

    iput-object v2, v1, Lcom/nemustech/tiffany/world/TFObject;->mDescription:Ljava/lang/String;

    .line 701
    :cond_0
    monitor-exit v0

    .line 702
    return-void

    .line 701
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public setUpdateHolderListener(Lcom/nemustech/tiffany/world/TFHolder$OnUpdateHolderListener;)V
    .locals 2
    .parameter "updateHolderListener"

    .prologue
    .line 277
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 278
    :try_start_0
    iput-object p1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mOnUpdateHolderListener:Lcom/nemustech/tiffany/world/TFHolder$OnUpdateHolderListener;

    .line 279
    monitor-exit v0

    .line 280
    return-void

    .line 279
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public unbindHolder(Lcom/nemustech/tiffany/world/TFHolder;)Z
    .locals 2
    .parameter "holder"

    .prologue
    .line 480
    const-class v0, Lcom/nemustech/tiffany/world/TFWorld;

    monitor-enter v0

    .line 481
    :try_start_0
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHolderBindings:Ljava/util/LinkedList;

    invoke-virtual {v1, p1}, Ljava/util/LinkedList;->contains(Ljava/lang/Object;)Z

    move-result v1

    if-eqz v1, :cond_0

    .line 482
    iget-object v1, p0, Lcom/nemustech/tiffany/world/TFHolder;->mHolderBindings:Ljava/util/LinkedList;

    invoke-virtual {v1, p1}, Ljava/util/LinkedList;->remove(Ljava/lang/Object;)Z

    move-result v1

    monitor-exit v0

    move v0, v1

    .line 484
    :goto_0
    return v0

    :cond_0
    const/4 v1, 0x0

    monitor-exit v0

    move v0, v1

    goto :goto_0

    .line 485
    :catchall_0
    move-exception v1

    monitor-exit v0
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    throw v1
.end method

.method public abstract updateLayout(I)Z
.end method

.method protected updateObject(Ljavax/microedition/khronos/opengles/GL10;IZ)Z
    .locals 1
    .parameter "gl"
    .parameter "tickPassed"
    .parameter "bDoGLCalc"

    .prologue
    .line 1577
    invoke-super {p0, p1, p2, p3}, Lcom/nemustech/tiffany/world/TFObject;->updateObject(Ljavax/microedition/khronos/opengles/GL10;IZ)Z

    move-result v0

    return v0
.end method
